diff --git a/tests/compiler/std/arraybuffer.json b/tests/compiler/std/arraybuffer.json index b1da366f..9f7878d4 100644 --- a/tests/compiler/std/arraybuffer.json +++ b/tests/compiler/std/arraybuffer.json @@ -1,5 +1,6 @@ { "asc_flags": [ - "--runtime none" + "--runtime half", + "--use ASC_RTRACE=1" ] } \ No newline at end of file diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 8236e135..fee6f954 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1,102 +1,1032 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 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$v (func)) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) + (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) + (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) + (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) (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 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 112) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 168) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") - (data (i32.const 192) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $std/arraybuffer/buffer (mut i32) (i32.const 0)) - (global $std/arraybuffer/sliced (mut i32) (i32.const 0)) - (global $std/arraybuffer/arr8 (mut i32) (i32.const 0)) + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 216) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 320) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 376) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 416) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 440) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data (i32.const 488) "\10\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93\04\00\00\02\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\00\10") + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 276 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 278 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $2 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $2 + local.get $3 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $2 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 291 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=20 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 + if + local.get $5 + local.get $4 + i32.store offset=20 + end + local.get $4 + if + local.get $4 + local.get $5 + i32.store offset=16 + end + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl local.get $0 - i32.const 1073741808 - i32.gt_u + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $4 + i32.store offset=96 + local.get $4 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 204 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 206 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $3 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 3 + i32.and + local.get $2 + i32.or + local.tee $3 + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $5 + end + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $2 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 227 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $7 + i32.const 1073741808 + i32.lt_u + if (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + local.get $6 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $3 + i32.store + local.get $2 + else + local.get $1 + end + local.set $1 + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 128 + i32.const 243 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $4 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $4 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 259 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.set $2 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $2 + i32.store offset=20 + local.get $2 + if + local.get $2 + local.get $1 + i32.store offset=16 + end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.or + i32.store + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 385 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 128 + i32.const 395 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 128 + i32.const 407 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initializeRoot (; 8 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end if unreachable end - global.get $~lib/rt/stub/offset + i32.const 624 + i32.const 0 + i32.store + i32.const 2192 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 + i32.const 23 + i32.ge_u + br_if $break|0 + local.get $0 + i32.const 2 + i32.shl + i32.const 624 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 624 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + i32.const 624 + i32.const 2208 + memory.size i32.const 16 - i32.add - local.tee $3 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 624 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 1 + i32.const 1073741808 + i32.ge_u + if + i32.const 176 + i32.const 128 + i32.const 447 + i32.const 29 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 - memory.size - local.tee $4 + local.tee $0 + i32.const 16 + local.get $0 i32.const 16 - i32.shl i32.gt_u - if - local.get $4 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 + select + ) + (func $~lib/rt/tlsf/searchBlock (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 337 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 350 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + memory.size + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 364 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 128 + i32.const 477 + i32.const 15 + call $~lib/builtins/abort + unreachable end end local.get $2 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and local.get $3 - i32.const 16 - i32.sub + i32.lt_u + if + i32.const 0 + i32.const 128 + i32.const 479 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + call $~lib/rt/rtrace/onalloc + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 local.get $1 i32.store offset=8 - local.get $2 local.get $0 - i32.store offset=12 - local.get $3 + i32.const 16 + i32.add ) - (func $~lib/memory/memory.fill (; 2 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.fill (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.const 0 @@ -140,13 +1070,66 @@ i32.const 0 i32.store8 ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/increment (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/rtrace/onincrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 232 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 620 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 18 ;) (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) + (func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -319,7 +1302,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -377,7 +1360,7 @@ select local.tee $2 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.tee $3 local.get $0 local.get $1 @@ -385,17 +1368,282 @@ local.get $2 call $~lib/memory/memory.copy local.get $3 + call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/freeBlock (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 531 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + ) + (func $~lib/rt/__typeinfo (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 488 + i32.load + i32.gt_u + if + i32.const 336 + i32.const 392 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 492 + i32.add + i32.load + ) + (func $~lib/rt/tlsf/__free (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 561 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 562 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/growRoots (; 24 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/pure/CUR + global.get $~lib/rt/pure/ROOTS + local.tee $1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 + i32.gt_u + select + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onfree + local.get $0 + local.get $1 + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onalloc + local.get $1 + call $~lib/rt/tlsf/__free + end + local.get $0 + global.set $~lib/rt/pure/ROOTS + local.get $0 + local.get $2 + i32.add + global.set $~lib/rt/pure/CUR + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.tee $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 268435455 + i32.and + local.set $1 + local.get $0 + call $~lib/rt/rtrace/ondecrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 232 + i32.const 115 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $2 + i32.const -2147483648 + i32.and + if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + else + local.get $1 + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 232 + i32.const 124 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $2 + i32.const -268435456 + i32.and + i32.or + i32.store offset=4 + else + local.get $0 + local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + end + end + ) + (func $~lib/rt/pure/__release (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 620 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/pure/__retain + drop + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/rt/pure/__retain + drop local.get $0 if + local.get $0 + call $~lib/rt/pure/__release i32.const 1 return end + local.get $0 + call $~lib/rt/pure/__release i32.const 0 ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) i32.const 1 i32.const 1073741808 local.get $1 @@ -414,14 +1662,15 @@ i32.shl local.tee $2 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.set $1 local.get $0 i32.eqz if i32.const 12 i32.const 2 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $0 end local.get $0 @@ -433,9 +1682,18 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $1 local.get $0 i32.load - drop + local.tee $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end local.get $0 local.get $1 i32.store @@ -447,17 +1705,18 @@ i32.store offset=8 local.get $0 ) - (func $~lib/rt/__allocArray (; 8 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/rt/__allocArray (; 31 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 16 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.tee $0 i32.const 8 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.tee $1 + call $~lib/rt/pure/__retain i32.store local.get $0 local.get $1 @@ -469,13 +1728,17 @@ i32.const 2 i32.store offset=12 local.get $1 - i32.const 184 + i32.const 432 i32.const 8 call $~lib/memory/memory.copy local.get $0 ) - (func $~lib/dataview/DataView#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/pure/__retain + drop local.get $1 i32.const 1073741808 i32.gt_u @@ -485,8 +1748,10 @@ i32.gt_u i32.or if + local.get $0 + call $~lib/rt/pure/__release i32.const 24 - i32.const 208 + i32.const 456 i32.const 21 i32.const 6 call $~lib/builtins/abort @@ -494,7 +1759,8 @@ end i32.const 12 i32.const 15 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.tee $2 i32.const 0 i32.store @@ -506,7 +1772,16 @@ i32.store offset=8 local.get $2 i32.load - drop + local.tee $3 + local.get $0 + i32.ne + if + local.get $0 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end local.get $2 local.get $0 i32.store @@ -516,186 +1791,216 @@ local.get $2 local.get $1 i32.store offset=8 + local.get $0 + call $~lib/rt/pure/__release local.get $2 ) - (func $start:std/arraybuffer (; 10 ;) (type $FUNCSIG$v) + (func $start:std/arraybuffer (; 33 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - i32.const 240 - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) i32.const 8 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.tee $0 call $~lib/memory/memory.fill local.get $0 - global.set $std/arraybuffer/buffer - global.get $std/arraybuffer/buffer + call $~lib/rt/pure/__retain + local.tee $2 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 8 i32.ne if i32.const 0 - i32.const 128 - i32.const 3 - i32.const 0 + i32.const 280 + i32.const 4 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/buffer + local.get $2 i32.const 0 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.tee $0 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 8 i32.ne if i32.const 0 - i32.const 128 - i32.const 7 - i32.const 0 + i32.const 280 + i32.const 8 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/sliced - global.get $std/arraybuffer/buffer + local.get $0 + local.get $2 i32.eq if i32.const 0 - i32.const 128 - i32.const 8 - i32.const 0 + i32.const 280 + i32.const 9 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/buffer + local.get $2 i32.const 1 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 7 i32.ne if i32.const 0 - i32.const 128 - i32.const 12 - i32.const 0 + i32.const 280 + i32.const 13 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/buffer + local.get $2 i32.const -1 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + local.tee $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 1 i32.ne if i32.const 0 - i32.const 128 - i32.const 16 - i32.const 0 + i32.const 280 + i32.const 17 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/buffer + local.get $2 i32.const 1 i32.const 3 call $~lib/arraybuffer/ArrayBuffer#slice - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + local.tee $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 2 i32.ne if i32.const 0 - i32.const 128 - i32.const 20 - i32.const 0 + i32.const 280 + i32.const 21 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/buffer + local.get $2 i32.const 1 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + local.tee $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 6 i32.ne if i32.const 0 - i32.const 128 - i32.const 24 - i32.const 0 + i32.const 280 + i32.const 25 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/buffer + local.get $2 i32.const -3 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 2 i32.ne if i32.const 0 - i32.const 128 - i32.const 28 - i32.const 0 + i32.const 280 + i32.const 29 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/buffer + local.get $2 i32.const -4 i32.const 42 call $~lib/arraybuffer/ArrayBuffer#slice - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $3 + local.get $0 + call $~lib/rt/pure/__release + local.get $3 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 4 i32.ne if i32.const 0 - i32.const 128 - i32.const 32 - i32.const 0 + i32.const 280 + i32.const 33 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/buffer + local.get $2 i32.const 42 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $1 + local.get $3 + call $~lib/rt/pure/__release + local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength if i32.const 0 - i32.const 128 - i32.const 36 - i32.const 0 + i32.const 280 + i32.const 37 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/sliced + local.get $1 i32.eqz if i32.const 0 - i32.const 128 - i32.const 37 + i32.const 280 + i32.const 38 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> + if i32.const 0 + i32.const 280 + i32.const 40 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -703,19 +2008,9 @@ 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 280 i32.const 42 - i32.const 0 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -723,51 +2018,78 @@ call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> if i32.const 0 - i32.const 128 + i32.const 280 i32.const 43 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> + if i32.const 0 + i32.const 280 + i32.const 44 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 12 i32.const 5 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - global.set $std/arraybuffer/arr8 + local.set $3 call $~lib/rt/__allocArray - drop - global.get $std/arraybuffer/arr8 + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> + if + i32.const 0 + i32.const 280 + i32.const 47 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> i32.eqz if i32.const 0 - i32.const 128 - i32.const 47 - i32.const 0 + i32.const 280 + i32.const 48 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 12 i32.const 9 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + local.set $6 + local.get $0 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> i32.eqz if i32.const 0 - i32.const 128 - i32.const 48 - i32.const 0 + i32.const 280 + i32.const 49 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 1 global.set $~lib/argc - global.get $std/arraybuffer/arr8 + local.get $3 i32.load - local.set $0 + call $~lib/rt/pure/__retain + local.tee $0 + local.set $7 block $2of2 block $1of2 block $outOfRange @@ -780,26 +2102,280 @@ end local.get $0 call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $1 + local.set $4 end local.get $0 - local.get $1 + local.get $4 call $~lib/dataview/DataView#constructor + local.tee $0 + local.set $4 + local.get $0 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> i32.eqz if i32.const 0 - i32.const 128 - i32.const 49 + i32.const 280 + i32.const 50 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + ) + (func $start (; 34 ;) (type $FUNCSIG$v) + call $start:std/arraybuffer + ) + (func $~lib/rt/pure/markGray (; 35 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (; 36 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__visit (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.const 620 + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $0 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $1 + i32.const 1 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + block $tablify|0 + local.get $1 + i32.const 3 + i32.sub + br_table $case2|0 $case3|0 $case4|0 $tablify|0 + end + br $case5|0 + end + local.get $0 + call $~lib/rt/pure/decrement + br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 232 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/markGray + br $break|0 + end + local.get $0 + call $~lib/rt/pure/scan + br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/pure/scanBlack + end + br $break|0 + end + local.get $0 + call $~lib/rt/pure/collectWhite + br $break|0 + end + i32.const 0 + i32.const 232 + i32.const 97 + i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $start (; 11 ;) (type $FUNCSIG$v) - call $start:std/arraybuffer + (func $~lib/rt/__visit_members (; 40 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $block$4$break + block $switch$1$default + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default + end + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit + end ) - (func $null (; 12 ;) (type $FUNCSIG$v) + (func $null (; 41 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/arraybuffer.ts b/tests/compiler/std/arraybuffer.ts index 77b5b8b8..9382e277 100644 --- a/tests/compiler/std/arraybuffer.ts +++ b/tests/compiler/std/arraybuffer.ts @@ -1,49 +1,51 @@ -var buffer = new ArrayBuffer(8); +{ + let buffer = new ArrayBuffer(8); -assert(buffer.byteLength == 8); + assert(buffer.byteLength == 8); -var sliced = buffer.slice(); + let sliced = buffer.slice(); -assert(sliced.byteLength == 8); -assert(sliced !== buffer); + assert(sliced.byteLength == 8); + assert(sliced !== buffer); -sliced = buffer.slice(1); + sliced = buffer.slice(1); -assert(sliced.byteLength == 7); + assert(sliced.byteLength == 7); -sliced = buffer.slice(-1); + sliced = buffer.slice(-1); -assert(sliced.byteLength == 1); + assert(sliced.byteLength == 1); -sliced = buffer.slice(1, 3); + sliced = buffer.slice(1, 3); -assert(sliced.byteLength == 2); + assert(sliced.byteLength == 2); -sliced = buffer.slice(1, -1); + sliced = buffer.slice(1, -1); -assert(sliced.byteLength == 6); + assert(sliced.byteLength == 6); -sliced = buffer.slice(-3, -1); + sliced = buffer.slice(-3, -1); -assert(sliced.byteLength == 2); + assert(sliced.byteLength == 2); -sliced = buffer.slice(-4, 42); + sliced = buffer.slice(-4, 42); -assert(sliced.byteLength == 4); + assert(sliced.byteLength == 4); -sliced = buffer.slice(42); + sliced = buffer.slice(42); -assert(sliced.byteLength == 0); -assert(sliced != null); + assert(sliced.byteLength == 0); + assert(sliced != null); -assert(!ArrayBuffer.isView(changetype(null))); -assert(!ArrayBuffer.isView(changetype(null))); -assert(!ArrayBuffer.isView(changetype(null))); -assert(!ArrayBuffer.isView(changetype(null))); -assert(!ArrayBuffer.isView(changetype(null))); + assert(!ArrayBuffer.isView(changetype(null))); + assert(!ArrayBuffer.isView(changetype(null))); + assert(!ArrayBuffer.isView(changetype(null))); + assert(!ArrayBuffer.isView(changetype(null))); + assert(!ArrayBuffer.isView(changetype(null))); -var arr8 = new Uint8Array(1); -assert(!ArrayBuffer.isView([1, 2])); -assert(ArrayBuffer.isView(arr8)); -assert(ArrayBuffer.isView(new Int32Array(1))); -assert(ArrayBuffer.isView(new DataView(arr8.buffer))); + let arr8 = new Uint8Array(1); + assert(!ArrayBuffer.isView([1, 2])); + assert(ArrayBuffer.isView(arr8)); + assert(ArrayBuffer.isView(new Int32Array(1))); + assert(ArrayBuffer.isView(new DataView(arr8.buffer))); +} diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index d2062e03..12c672b1 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -1,32 +1,43 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$v (func)) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) + (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) + (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) + (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) (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\00") (data (i32.const 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 112) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 168) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 192) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 216) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 320) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 376) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 416) "\08\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 440) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") + (data (i32.const 488) "\10\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93\04\00\00\02\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\00\10\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $std/arraybuffer/buffer (mut i32) (i32.const 0)) - (global $std/arraybuffer/sliced (mut i32) (i32.const 0)) - (global $std/arraybuffer/arr8 (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 240)) + (global $~lib/rt/__rtti_base i32 (i32.const 488)) + (global $~lib/heap/__heap_base i32 (i32.const 620)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -34,25 +45,870 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 276 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + i32.const 16 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 278 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 291 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=16 + local.set $6 + local.get $1 + i32.load offset=20 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=20 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=16 + end + local.get $1 + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + i32.eq + if + block $~lib/rt/tlsf/SETHEAD|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + end + local.get $7 + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $9 + block $~lib/rt/tlsf/SETSL|inlined.1 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + end + local.get $9 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 204 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 206 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load + end + local.set $6 + local.get $6 + i32.load + local.set $3 + local.get $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 227 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + local.get $3 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $6 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + local.get $8 + i32.const 16 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 243 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 259 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $11 + i32.store offset=20 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=16 + end + block $~lib/rt/tlsf/SETHEAD|inlined.2 + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end local.get $0 - i32.const 1073741808 - i32.gt_u + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + block $~lib/rt/tlsf/SETSL|inlined.2 + local.get $0 + local.set $13 + local.get $9 + local.set $12 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + end + ) + (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 385 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 395 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 407 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 8 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + memory.size + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end if unreachable end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 + local.set $3 local.get $3 - local.get $4 - i32.gt_u - select + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $7 + loop $repeat|1 + local.get $7 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $repeat|1 + unreachable + end + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 i32.add i32.const 15 i32.add @@ -60,65 +916,475 @@ i32.const -1 i32.xor i32.and - local.set $5 memory.size - local.set $6 - local.get $5 - local.get $6 i32.const 16 i32.shl - i32.gt_u + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u if - local.get $5 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 + i32.const 176 + i32.const 128 + i32.const 447 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 i32.shr_u local.set $3 - local.get $6 - local.tee $4 - local.get $3 - local.tee $7 - local.get $4 - local.get $7 - i32.gt_s - select + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end local.set $4 + i32.const 31 local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 337 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 350 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + memory.size + local.set $2 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 memory.grow i32.const 0 i32.lt_s if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end + unreachable end end - local.get $5 - global.set $~lib/rt/stub/offset + memory.size + local.set $7 + local.get $0 local.get $2 i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 364 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 i32.sub - local.set $8 - local.get $8 + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 477 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 479 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + call $~lib/rt/rtrace/onalloc + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 local.get $1 i32.store offset=8 - local.get $8 - local.get $0 - i32.store offset=12 - local.get $2 + local.get $3 + i32.const 16 + i32.add ) - (func $~lib/memory/memory.fill (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -381,10 +1647,68 @@ end end ) - (func $~lib/rt/stub/__retain (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/increment (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/rtrace/onincrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 @@ -399,22 +1723,22 @@ end local.get $1 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.set $2 local.get $2 i32.const 0 local.get $1 call $~lib/memory/memory.fill local.get $2 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $~lib/util/memory/memcpy (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1605,7 +2929,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1832,7 +3156,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1904,7 +3228,7 @@ local.set $6 local.get $6 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.set $7 local.get $7 local.get $0 @@ -1913,15 +3237,296 @@ local.get $6 call $~lib/memory/memory.copy local.get $7 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain ) - (func $~lib/rt/stub/__release (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) - nop + (func $~lib/rt/tlsf/freeBlock (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 531 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 336 + i32.const 392 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/tlsf/__free (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 561 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 562 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/growRoots (; 26 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + global.get $~lib/rt/pure/CUR + local.get $0 + i32.sub + local.set $1 + local.get $1 + i32.const 2 + i32.mul + local.tee $2 + i32.const 64 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + local.set $4 + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onfree + local.get $5 + local.get $0 + local.get $1 + call $~lib/memory/memory.copy + local.get $0 + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onalloc + local.get $0 + call $~lib/rt/tlsf/__free + end + local.get $5 + global.set $~lib/rt/pure/ROOTS + local.get $5 + local.get $1 + i32.add + global.set $~lib/rt/pure/CUR + local.get $5 + local.get $4 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.set $1 + local.get $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.and + local.set $2 + local.get $0 + call $~lib/rt/rtrace/ondecrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 115 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + else + local.get $0 + i32.const -2147483648 + i32.const 0 + i32.or + i32.const 0 + i32.or + i32.store offset=4 + end + else + local.get $2 + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 124 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + i32.eqz + if + local.get $0 + i32.const -2147483648 + i32.const 805306368 + i32.or + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + else + local.get $0 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + end + end + ) + (func $~lib/rt/pure/__release (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain drop local.get $0 if @@ -1934,7 +3539,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -1947,7 +3552,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -1960,7 +3565,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -1973,7 +3578,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -1986,7 +3591,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -1999,7 +3604,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2012,7 +3617,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2025,7 +3630,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2038,7 +3643,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2051,7 +3656,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2064,7 +3669,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2077,7 +3682,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2085,10 +3690,10 @@ i32.const 0 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/arraybuffer/ArrayBuffer.isView (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if block (result i32) @@ -2202,10 +3807,10 @@ end i32.const 0 ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain drop local.get $0 if @@ -2218,7 +3823,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2231,7 +3836,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2244,7 +3849,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2257,7 +3862,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2270,7 +3875,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2283,7 +3888,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2296,7 +3901,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2309,7 +3914,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2322,7 +3927,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2335,7 +3940,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2348,7 +3953,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2361,7 +3966,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2369,13 +3974,13 @@ i32.const 0 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain drop local.get $0 if @@ -2388,7 +3993,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2401,7 +4006,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2414,7 +4019,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2427,7 +4032,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2440,7 +4045,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2453,7 +4058,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2466,7 +4071,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2479,7 +4084,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2492,7 +4097,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2505,7 +4110,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2518,7 +4123,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2531,7 +4136,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2539,13 +4144,13 @@ i32.const 0 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain drop local.get $0 if @@ -2558,7 +4163,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2571,7 +4176,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2584,7 +4189,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2597,7 +4202,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2610,7 +4215,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2623,7 +4228,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2636,7 +4241,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2649,7 +4254,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2662,7 +4267,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2675,7 +4280,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2688,7 +4293,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2701,7 +4306,7 @@ i32.const 1 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 return end @@ -2709,10 +4314,10 @@ i32.const 0 local.set $1 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2734,7 +4339,7 @@ i32.shl local.tee $1 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.set $3 block (result i32) local.get $0 @@ -2742,8 +4347,8 @@ if i32.const 12 i32.const 2 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $0 end local.get $0 @@ -2767,10 +4372,10 @@ i32.ne if local.get $5 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain drop local.get $4 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release end local.get $5 end @@ -2783,15 +4388,15 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#constructor (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else i32.const 12 i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain end local.get $1 i32.const 0 @@ -2799,13 +4404,13 @@ local.set $0 local.get $0 ) - (func $~lib/rt/__allocArray (; 17 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 37 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) i32.const 16 local.get $2 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.set $4 local.get $0 local.get $1 @@ -2813,11 +4418,11 @@ local.set $5 local.get $5 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.set $6 local.get $4 local.get $6 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain i32.store local.get $4 local.get $6 @@ -2837,15 +4442,15 @@ end local.get $4 ) - (func $~lib/typedarray/Int32Array#constructor (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#constructor (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else i32.const 12 i32.const 9 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain end local.get $1 i32.const 2 @@ -2853,12 +4458,12 @@ local.set $0 local.get $0 ) - (func $~lib/dataview/DataView#constructor (; 19 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 39 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $1 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain drop local.get $3 i32.const 1073741808 @@ -2872,10 +4477,10 @@ i32.or if local.get $1 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release block i32.const 24 - i32.const 208 + i32.const 456 i32.const 21 i32.const 6 call $~lib/builtins/abort @@ -2890,8 +4495,8 @@ if i32.const 12 i32.const 15 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $0 end local.get $0 @@ -2915,10 +4520,10 @@ i32.ne if local.get $5 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain drop local.get $4 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release end local.get $5 end @@ -2934,15 +4539,15 @@ local.get $3 i32.store offset=8 local.get $1 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $0 ) - (func $~lib/typedarray/Uint8Array#get:buffer (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:buffer (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain ) - (func $~lib/dataview/DataView#constructor|trampoline (; 21 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/dataview/DataView#constructor|trampoline (; 41 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -2967,245 +4572,238 @@ local.get $3 call $~lib/dataview/DataView#constructor ) - (func $start:std/arraybuffer (; 22 ;) (type $FUNCSIG$v) + (func $start:std/arraybuffer (; 42 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 0 i32.const 8 call $~lib/arraybuffer/ArrayBuffer#constructor - global.set $std/arraybuffer/buffer - global.get $std/arraybuffer/buffer + local.set $0 + local.get $0 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 3 - i32.const 0 + i32.const 280 + i32.const 4 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/buffer + local.get $0 i32.const 0 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $1 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 7 - i32.const 0 + i32.const 280 + i32.const 8 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/sliced - global.get $std/arraybuffer/buffer + local.get $1 + local.get $0 i32.ne i32.eqz if i32.const 0 - i32.const 128 - i32.const 8 - i32.const 0 + i32.const 280 + i32.const 9 + i32.const 2 call $~lib/builtins/abort unreachable end block (result i32) - global.get $std/arraybuffer/buffer + local.get $0 i32.const 1 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 - global.get $std/arraybuffer/sliced - call $~lib/rt/stub/__release - local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 end - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $1 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 7 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 12 - i32.const 0 + i32.const 280 + i32.const 13 + i32.const 2 call $~lib/builtins/abort unreachable end block (result i32) - global.get $std/arraybuffer/buffer + local.get $0 i32.const -1 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 - global.get $std/arraybuffer/sliced - call $~lib/rt/stub/__release - local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 end - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $1 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 16 - i32.const 0 + i32.const 280 + i32.const 17 + i32.const 2 call $~lib/builtins/abort unreachable end block (result i32) - global.get $std/arraybuffer/buffer + local.get $0 i32.const 1 i32.const 3 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 - global.get $std/arraybuffer/sliced - call $~lib/rt/stub/__release - local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 end - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $1 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 20 - i32.const 0 + i32.const 280 + i32.const 21 + i32.const 2 call $~lib/builtins/abort unreachable end block (result i32) - global.get $std/arraybuffer/buffer + local.get $0 i32.const 1 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 - global.get $std/arraybuffer/sliced - call $~lib/rt/stub/__release - local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 end - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $1 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 24 - i32.const 0 + i32.const 280 + i32.const 25 + i32.const 2 call $~lib/builtins/abort unreachable end block (result i32) - global.get $std/arraybuffer/buffer + local.get $0 i32.const -3 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 - global.get $std/arraybuffer/sliced - call $~lib/rt/stub/__release - local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 end - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $1 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 28 - i32.const 0 + i32.const 280 + i32.const 29 + i32.const 2 call $~lib/builtins/abort unreachable end block (result i32) - global.get $std/arraybuffer/buffer + local.get $0 i32.const -4 i32.const 42 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 - global.get $std/arraybuffer/sliced - call $~lib/rt/stub/__release - local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 end - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $1 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 32 - i32.const 0 + i32.const 280 + i32.const 33 + i32.const 2 call $~lib/builtins/abort unreachable end block (result i32) - global.get $std/arraybuffer/buffer + local.get $0 i32.const 42 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 - global.get $std/arraybuffer/sliced - call $~lib/rt/stub/__release - local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 end - global.set $std/arraybuffer/sliced - global.get $std/arraybuffer/sliced + local.set $1 + local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 36 - i32.const 0 + i32.const 280 + i32.const 37 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/sliced + local.get $1 i32.const 0 i32.ne i32.eqz if i32.const 0 - i32.const 128 - i32.const 37 - i32.const 0 + i32.const 280 + i32.const 38 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -3215,9 +4813,9 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 39 - i32.const 0 + i32.const 280 + i32.const 40 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -3227,9 +4825,9 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 40 - i32.const 0 + i32.const 280 + i32.const 41 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -3239,9 +4837,9 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 41 - i32.const 0 + i32.const 280 + i32.const 42 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -3251,9 +4849,9 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 42 - i32.const 0 + i32.const 280 + i32.const 43 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -3263,56 +4861,56 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 43 - i32.const 0 + i32.const 280 + i32.const 44 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#constructor - global.set $std/arraybuffer/arr8 + local.set $2 i32.const 2 i32.const 2 i32.const 3 - i32.const 184 + i32.const 432 call $~lib/rt/__allocArray - call $~lib/rt/stub/__retain - local.tee $1 + call $~lib/rt/pure/__retain + local.tee $4 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> i32.eqz i32.eqz if i32.const 0 - i32.const 128 - i32.const 46 - i32.const 0 + i32.const 280 + i32.const 47 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/arraybuffer/arr8 + local.get $2 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> i32.eqz if i32.const 0 - i32.const 128 - i32.const 47 - i32.const 0 + i32.const 280 + i32.const 48 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#constructor - local.tee $0 + local.tee $3 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> i32.eqz if i32.const 0 - i32.const 128 - i32.const 48 - i32.const 0 + i32.const 280 + i32.const 49 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -3320,36 +4918,396 @@ i32.const 1 global.set $~lib/argc i32.const 0 - global.get $std/arraybuffer/arr8 + local.get $2 call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 + local.tee $5 i32.const 0 i32.const 0 call $~lib/dataview/DataView#constructor|trampoline - local.tee $3 + local.tee $6 end call $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> i32.eqz if i32.const 0 - i32.const 128 - i32.const 49 - i32.const 0 + i32.const 280 + i32.const 50 + i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release ) - (func $start (; 23 ;) (type $FUNCSIG$v) + (func $start (; 43 ;) (type $FUNCSIG$v) call $start:std/arraybuffer ) - (func $null (; 24 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__visit_impl (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/rt/pure/markGray (; 45 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (; 46 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 47 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__visit (; 49 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $3 + local.get $3 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $3 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $3 + i32.const 4 + i32.eq + br_if $case3|0 + local.get $3 + i32.const 5 + i32.eq + br_if $case4|0 + br $case5|0 + end + block + local.get $2 + call $~lib/rt/pure/decrement + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + call $~lib/rt/pure/scan + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 + unreachable + end + unreachable + end + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 97 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $~lib/rt/__visit_members (; 50 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $block$4$break + block + end + block $switch$1$leave + block $switch$1$default + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default + end + block + block + return + unreachable + end + unreachable + unreachable + end + unreachable + end + block + br $block$4$break + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + block + br $block$4$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + end + block + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable + unreachable + end + unreachable + ) + (func $null (; 51 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/dataview.json b/tests/compiler/std/dataview.json index b1da366f..9f7878d4 100644 --- a/tests/compiler/std/dataview.json +++ b/tests/compiler/std/dataview.json @@ -1,5 +1,6 @@ { "asc_flags": [ - "--runtime none" + "--runtime half", + "--use ASC_RTRACE=1" ] } \ No newline at end of file diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 5c8f3070..e98883b1 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -2,118 +2,1524 @@ (type $FUNCSIG$iii (func (param 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$v (func)) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$fiii (func (param i32 i32 i32) (result f32))) (type $FUNCSIG$jj (func (param i64) (result i64))) - (type $FUNCSIG$v (func)) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$vifi (func (param i32 f32 i32))) (type $FUNCSIG$vidi (func (param i32 f64 i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) + (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) + (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) + (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) (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 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 112) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 224) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (data (i32.const 272) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $std/dataview/array (mut i32) (i32.const 0)) - (global $std/dataview/view (mut i32) (i32.const 0)) + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 216) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 360) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 416) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data (i32.const 464) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data (i32.const 512) "\05\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10") + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 276 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 278 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $2 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $2 + local.get $3 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $2 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 291 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=20 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 + if + local.get $5 + local.get $4 + i32.store offset=20 + end + local.get $4 + if + local.get $4 + local.get $5 + i32.store offset=16 + end + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl local.get $0 - i32.const 1073741808 - i32.gt_u + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $4 + i32.store offset=96 + local.get $4 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 204 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 206 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $3 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 3 + i32.and + local.get $2 + i32.or + local.tee $3 + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $5 + end + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $2 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 227 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $7 + i32.const 1073741808 + i32.lt_u + if (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + local.get $6 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $3 + i32.store + local.get $2 + else + local.get $1 + end + local.set $1 + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 128 + i32.const 243 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $4 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $4 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 259 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.set $2 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $2 + i32.store offset=20 + local.get $2 + if + local.get $2 + local.get $1 + i32.store offset=16 + end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.or + i32.store + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 385 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 128 + i32.const 395 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 128 + i32.const 407 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initializeRoot (; 8 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end if unreachable end - global.get $~lib/rt/stub/offset + i32.const 560 + i32.const 0 + i32.store + i32.const 2128 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 + i32.const 23 + i32.ge_u + br_if $break|0 + local.get $0 + i32.const 2 + i32.shl + i32.const 560 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 560 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + i32.const 560 + i32.const 2144 + memory.size i32.const 16 - i32.add - local.tee $3 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 560 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 1 + i32.const 1073741808 + i32.ge_u + if + i32.const 176 + i32.const 128 + i32.const 447 + i32.const 29 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 1 - i32.gt_u - select - i32.add i32.const 15 i32.add i32.const -16 i32.and - local.tee $2 - memory.size - local.tee $4 + local.tee $0 + i32.const 16 + local.get $0 i32.const 16 - i32.shl i32.gt_u - if - local.get $4 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 + select + ) + (func $~lib/rt/tlsf/searchBlock (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 337 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 350 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + memory.size + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 memory.grow i32.const 0 i32.lt_s if - local.get $5 - memory.grow + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 364 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 128 + i32.const 477 + i32.const 15 + call $~lib/builtins/abort + unreachable end end local.get $2 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and local.get $3 - i32.const 16 - i32.sub + i32.lt_u + if + i32.const 0 + i32.const 128 + i32.const 479 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + call $~lib/rt/rtrace/onalloc + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 local.get $1 i32.store offset=8 - local.get $2 local.get $0 - i32.store offset=12 - local.get $3 + i32.const 16 + i32.add ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/increment (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/rtrace/onincrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 232 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 556 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/tlsf/freeBlock (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 128 + i32.const 531 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + ) + (func $~lib/rt/__typeinfo (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 512 + i32.load + i32.gt_u + if + i32.const 280 + i32.const 336 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 516 + i32.add + i32.load + ) + (func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 + end + end + end + loop $continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $3 + if + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/__free (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 561 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 562 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/growRoots (; 21 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/pure/CUR + global.get $~lib/rt/pure/ROOTS + local.tee $1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 + i32.gt_u + select + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onfree + local.get $0 + local.get $1 + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onalloc + local.get $1 + call $~lib/rt/tlsf/__free + end + local.get $0 + global.set $~lib/rt/pure/ROOTS + local.get $0 + local.get $2 + i32.add + global.set $~lib/rt/pure/CUR + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.tee $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 268435455 + i32.and + local.set $1 + local.get $0 + call $~lib/rt/rtrace/ondecrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 232 + i32.const 115 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $2 + i32.const -2147483648 + i32.and + if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + else + local.get $1 + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 232 + i32.const 124 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $2 + i32.const -268435456 + i32.and + i32.or + i32.store offset=4 + else + local.get $0 + local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + end + end + ) + (func $~lib/rt/pure/__release (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 556 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) i32.const 8 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.set $1 local.get $0 i32.eqz if i32.const 12 i32.const 2 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $0 end local.get $0 @@ -127,7 +1533,16 @@ i32.store offset=8 local.get $0 i32.load - drop + local.tee $2 + local.get $1 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + drop + local.get $2 + call $~lib/rt/pure/__release + end local.get $0 local.get $1 i32.store @@ -139,14 +1554,14 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#__set (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 128 - i32.const 184 + i32.const 280 + i32.const 376 i32.const 115 i32.const 44 call $~lib/builtins/abort @@ -159,14 +1574,18 @@ local.get $2 i32.store8 ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 27 ;) (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) + (func $~lib/dataview/DataView#constructor (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/pure/__retain + drop local.get $2 i32.const 1073741808 i32.gt_u @@ -178,8 +1597,10 @@ i32.gt_u i32.or if + local.get $0 + call $~lib/rt/pure/__release i32.const 24 - i32.const 240 + i32.const 432 i32.const 21 i32.const 6 call $~lib/builtins/abort @@ -187,7 +1608,8 @@ end i32.const 12 i32.const 4 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.tee $3 i32.const 0 i32.store @@ -199,7 +1621,16 @@ i32.store offset=8 local.get $3 i32.load - drop + local.tee $4 + local.get $0 + i32.ne + if + local.get $0 + call $~lib/rt/pure/__retain + drop + local.get $4 + call $~lib/rt/pure/__release + end local.get $3 local.get $0 i32.store @@ -211,16 +1642,23 @@ local.get $3 local.get $2 i32.store offset=8 + local.get $0 + call $~lib/rt/pure/__release local.get $3 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:buffer (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + call $~lib/rt/pure/__retain + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 30 ;) (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 (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const -16711936 i32.and @@ -233,7 +1671,7 @@ i32.rotr i32.or ) - (func $~lib/dataview/DataView#getFloat32 (; 8 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $~lib/dataview/DataView#getFloat32 (; 32 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $1 i32.const 0 i32.lt_s @@ -245,8 +1683,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 44 i32.const 6 call $~lib/builtins/abort @@ -269,7 +1707,7 @@ f32.reinterpret_i32 end ) - (func $~lib/polyfills/bswap (; 9 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 33 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) local.get $0 i64.const 8 i64.shr_u @@ -295,14 +1733,14 @@ i64.const 32 i64.rotr ) - (func $~lib/dataview/DataView#getFloat64 (; 10 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/dataview/DataView#getFloat64 (; 34 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 58 i32.const 7 call $~lib/builtins/abort @@ -321,14 +1759,14 @@ f64.reinterpret_i64 end ) - (func $~lib/dataview/DataView#getInt8 (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getInt8 (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 69 i32.const 49 call $~lib/builtins/abort @@ -340,7 +1778,7 @@ i32.add i32.load8_s ) - (func $~lib/polyfills/bswap (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -353,7 +1791,7 @@ i32.shl i32.or ) - (func $~lib/dataview/DataView#getInt16 (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt16 (; 37 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -365,8 +1803,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 77 i32.const 7 call $~lib/builtins/abort @@ -387,7 +1825,7 @@ end local.get $0 ) - (func $~lib/dataview/DataView#getInt32 (; 14 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt32 (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -399,8 +1837,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 86 i32.const 7 call $~lib/builtins/abort @@ -421,15 +1859,15 @@ end local.get $0 ) - (func $~lib/dataview/DataView#getInt64 (; 15 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/dataview/DataView#getInt64 (; 39 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 180 i32.const 6 call $~lib/builtins/abort @@ -447,14 +1885,14 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint8 (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getUint8 (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 92 i32.const 49 call $~lib/builtins/abort @@ -466,7 +1904,7 @@ i32.add i32.load8_u ) - (func $~lib/polyfills/bswap (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 8 i32.shl @@ -477,7 +1915,7 @@ 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) + (func $~lib/dataview/DataView#getUint16 (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -489,8 +1927,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 100 i32.const 6 call $~lib/builtins/abort @@ -511,7 +1949,7 @@ end local.get $0 ) - (func $~lib/dataview/DataView#getUint32 (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint32 (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 0 i32.lt_s @@ -523,8 +1961,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 109 i32.const 6 call $~lib/builtins/abort @@ -545,15 +1983,15 @@ end local.get $0 ) - (func $~lib/dataview/DataView#getUint64 (; 20 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/dataview/DataView#getUint64 (; 44 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 189 i32.const 6 call $~lib/builtins/abort @@ -571,14 +2009,14 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#setFloat32 (; 21 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (func $~lib/dataview/DataView#setFloat32 (; 45 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) i32.const 4 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 118 i32.const 6 call $~lib/builtins/abort @@ -599,14 +2037,14 @@ i32.store end ) - (func $~lib/dataview/DataView#setFloat64 (; 22 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (func $~lib/dataview/DataView#setFloat64 (; 46 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 127 i32.const 6 call $~lib/builtins/abort @@ -627,14 +2065,14 @@ i64.store end ) - (func $~lib/dataview/DataView#setInt8 (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/dataview/DataView#setInt8 (; 47 ;) (type $FUNCSIG$vi) (param $0 i32) i32.const 0 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 133 i32.const 49 call $~lib/builtins/abort @@ -645,14 +2083,14 @@ i32.const 108 i32.store8 ) - (func $~lib/dataview/DataView#setInt16 (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt16 (; 48 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 2 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 141 i32.const 6 call $~lib/builtins/abort @@ -669,14 +2107,14 @@ end i32.store16 ) - (func $~lib/dataview/DataView#setInt32 (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt32 (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 4 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 149 i32.const 6 call $~lib/builtins/abort @@ -693,14 +2131,14 @@ end i32.store ) - (func $~lib/dataview/DataView#setInt64 (; 26 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/dataview/DataView#setInt64 (; 50 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 198 i32.const 6 call $~lib/builtins/abort @@ -717,14 +2155,14 @@ end i64.store ) - (func $~lib/dataview/DataView#setUint8 (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/dataview/DataView#setUint8 (; 51 ;) (type $FUNCSIG$vi) (param $0 i32) i32.const 0 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 154 i32.const 49 call $~lib/builtins/abort @@ -735,14 +2173,14 @@ i32.const 238 i32.store8 ) - (func $~lib/dataview/DataView#setUint16 (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setUint16 (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 2 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 162 i32.const 6 call $~lib/builtins/abort @@ -759,14 +2197,14 @@ end i32.store16 ) - (func $~lib/dataview/DataView#setUint32 (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setUint32 (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) i32.const 4 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 170 i32.const 6 call $~lib/builtins/abort @@ -783,14 +2221,14 @@ end i32.store ) - (func $~lib/dataview/DataView#setUint64 (; 30 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/dataview/DataView#setUint64 (; 54 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) i32.const 8 local.get $0 i32.load offset=8 i32.gt_s if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 206 i32.const 6 call $~lib/builtins/abort @@ -807,7 +2245,7 @@ end i64.store ) - (func $~lib/dataview/DataView#constructor|trampoline (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/dataview/DataView#constructor|trampoline (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) block $2of2 block $1of2 @@ -828,57 +2266,58 @@ local.get $1 call $~lib/dataview/DataView#constructor ) - (func $start:std/dataview (; 32 ;) (type $FUNCSIG$v) - i32.const 320 - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + (func $start:std/dataview (; 56 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) i32.const 12 i32.const 3 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain call $~lib/arraybuffer/ArrayBufferView#constructor - global.set $std/dataview/array - global.get $std/dataview/array + local.tee $1 i32.const 0 i32.const 246 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $1 i32.const 1 i32.const 224 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $1 i32.const 2 i32.const 88 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $1 i32.const 3 i32.const 159 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $1 i32.const 4 i32.const 130 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $1 i32.const 5 i32.const 101 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $1 i32.const 6 i32.const 67 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $1 i32.const 7 i32.const 95 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array - i32.load - global.get $std/dataview/array + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + local.get $1 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - global.get $std/dataview/array + local.get $1 i32.load offset=8 call $~lib/dataview/DataView#constructor - global.set $std/dataview/view - global.get $std/dataview/view + local.tee $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -886,13 +2325,13 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 14 - i32.const 0 + i32.const 480 + i32.const 15 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -900,13 +2339,13 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 15 - i32.const 0 + i32.const 480 + i32.const 16 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -914,13 +2353,13 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 16 - i32.const 0 + i32.const 480 + i32.const 17 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -928,13 +2367,13 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 17 - i32.const 0 + i32.const 480 + i32.const 18 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -942,13 +2381,13 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 18 - i32.const 0 + i32.const 480 + i32.const 19 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -956,13 +2395,13 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 20 - i32.const 0 + i32.const 480 + i32.const 21 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -970,13 +2409,13 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 21 - i32.const 0 + i32.const 480 + i32.const 22 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -984,13 +2423,13 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 22 - i32.const 0 + i32.const 480 + i32.const 23 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -998,13 +2437,13 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 23 - i32.const 0 + i32.const 480 + i32.const 24 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1012,143 +2451,143 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 24 - i32.const 0 + i32.const 480 + i32.const 25 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 call $~lib/dataview/DataView#getFloat64 f64.const 7936550095674706383278551e126 f64.ne if i32.const 0 - i32.const 288 - i32.const 26 - i32.const 0 + i32.const 480 + i32.const 27 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 call $~lib/dataview/DataView#getFloat64 f64.const -411777475818852546741639e241 f64.ne if i32.const 0 - i32.const 288 - i32.const 27 - i32.const 0 + i32.const 480 + i32.const 28 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const -10 i32.ne if i32.const 0 - i32.const 288 - i32.const 29 - i32.const 0 + i32.const 480 + i32.const 30 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 call $~lib/dataview/DataView#getInt8 i32.const -32 i32.ne if i32.const 0 - i32.const 288 - i32.const 30 - i32.const 0 + i32.const 480 + i32.const 31 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 call $~lib/dataview/DataView#getInt8 i32.const 88 i32.ne if i32.const 0 - i32.const 288 - i32.const 31 - i32.const 0 + i32.const 480 + i32.const 32 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 call $~lib/dataview/DataView#getInt8 i32.const -97 i32.ne if i32.const 0 - i32.const 288 - i32.const 32 - i32.const 0 + i32.const 480 + i32.const 33 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 call $~lib/dataview/DataView#getInt8 i32.const -126 i32.ne if i32.const 0 - i32.const 288 - i32.const 33 - i32.const 0 + i32.const 480 + i32.const 34 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 5 call $~lib/dataview/DataView#getInt8 i32.const 101 i32.ne if i32.const 0 - i32.const 288 - i32.const 34 - i32.const 0 + i32.const 480 + i32.const 35 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 6 call $~lib/dataview/DataView#getInt8 i32.const 67 i32.ne if i32.const 0 - i32.const 288 - i32.const 35 - i32.const 0 + i32.const 480 + i32.const 36 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 7 call $~lib/dataview/DataView#getInt8 i32.const 95 i32.ne if i32.const 0 - i32.const 288 - i32.const 36 - i32.const 0 + i32.const 480 + i32.const 37 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1158,13 +2597,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 38 - i32.const 0 + i32.const 480 + i32.const 39 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1174,13 +2613,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 39 - i32.const 0 + i32.const 480 + i32.const 40 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1190,13 +2629,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 40 - i32.const 0 + i32.const 480 + i32.const 41 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1206,13 +2645,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 41 - i32.const 0 + i32.const 480 + i32.const 42 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1222,13 +2661,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 42 - i32.const 0 + i32.const 480 + i32.const 43 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1238,13 +2677,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 43 - i32.const 0 + i32.const 480 + i32.const 44 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1254,13 +2693,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 44 - i32.const 0 + i32.const 480 + i32.const 45 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1270,13 +2709,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 46 - i32.const 0 + i32.const 480 + i32.const 47 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1286,13 +2725,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 47 - i32.const 0 + i32.const 480 + i32.const 48 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1302,13 +2741,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 48 - i32.const 0 + i32.const 480 + i32.const 49 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1318,13 +2757,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 49 - i32.const 0 + i32.const 480 + i32.const 50 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1334,13 +2773,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 50 - i32.const 0 + i32.const 480 + i32.const 51 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1350,13 +2789,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 51 - i32.const 0 + i32.const 480 + i32.const 52 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1366,13 +2805,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 52 - i32.const 0 + i32.const 480 + i32.const 53 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -1380,13 +2819,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 54 - i32.const 0 + i32.const 480 + i32.const 55 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -1394,13 +2833,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 55 - i32.const 0 + i32.const 480 + i32.const 56 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -1408,13 +2847,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 56 - i32.const 0 + i32.const 480 + i32.const 57 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -1422,13 +2861,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 57 - i32.const 0 + i32.const 480 + i32.const 58 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -1436,13 +2875,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 58 - i32.const 0 + i32.const 480 + i32.const 59 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -1450,13 +2889,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 60 - i32.const 0 + i32.const 480 + i32.const 61 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -1464,13 +2903,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 61 - i32.const 0 + i32.const 480 + i32.const 62 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -1478,13 +2917,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 62 - i32.const 0 + i32.const 480 + i32.const 63 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -1492,13 +2931,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 63 - i32.const 0 + i32.const 480 + i32.const 64 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -1506,143 +2945,143 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 64 - i32.const 0 + i32.const 480 + i32.const 65 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 call $~lib/dataview/DataView#getInt64 i64.const 6864441868736323830 i64.ne if i32.const 0 - i32.const 288 - i32.const 66 - i32.const 0 + i32.const 480 + i32.const 67 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 call $~lib/dataview/DataView#getInt64 i64.const -657428103485373601 i64.ne if i32.const 0 - i32.const 288 - i32.const 67 - i32.const 0 + i32.const 480 + i32.const 68 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 246 i32.ne if i32.const 0 - i32.const 288 - i32.const 69 - i32.const 0 + i32.const 480 + i32.const 70 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 call $~lib/dataview/DataView#getUint8 i32.const 224 i32.ne if i32.const 0 - i32.const 288 - i32.const 70 - i32.const 0 + i32.const 480 + i32.const 71 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 call $~lib/dataview/DataView#getUint8 i32.const 88 i32.ne if i32.const 0 - i32.const 288 - i32.const 71 - i32.const 0 + i32.const 480 + i32.const 72 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 call $~lib/dataview/DataView#getUint8 i32.const 159 i32.ne if i32.const 0 - i32.const 288 - i32.const 72 - i32.const 0 + i32.const 480 + i32.const 73 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 call $~lib/dataview/DataView#getUint8 i32.const 130 i32.ne if i32.const 0 - i32.const 288 - i32.const 73 - i32.const 0 + i32.const 480 + i32.const 74 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 5 call $~lib/dataview/DataView#getUint8 i32.const 101 i32.ne if i32.const 0 - i32.const 288 - i32.const 74 - i32.const 0 + i32.const 480 + i32.const 75 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 6 call $~lib/dataview/DataView#getUint8 i32.const 67 i32.ne if i32.const 0 - i32.const 288 - i32.const 75 - i32.const 0 + i32.const 480 + i32.const 76 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 7 call $~lib/dataview/DataView#getUint8 i32.const 95 i32.ne if i32.const 0 - i32.const 288 - i32.const 76 - i32.const 0 + i32.const 480 + i32.const 77 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -1652,13 +3091,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 78 - i32.const 0 + i32.const 480 + i32.const 79 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -1668,13 +3107,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 79 - i32.const 0 + i32.const 480 + i32.const 80 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -1684,13 +3123,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 80 - i32.const 0 + i32.const 480 + i32.const 81 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -1700,13 +3139,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 81 - i32.const 0 + i32.const 480 + i32.const 82 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -1716,13 +3155,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 82 - i32.const 0 + i32.const 480 + i32.const 83 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -1732,13 +3171,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 83 - i32.const 0 + i32.const 480 + i32.const 84 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -1748,13 +3187,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 84 - i32.const 0 + i32.const 480 + i32.const 85 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -1764,13 +3203,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 86 - i32.const 0 + i32.const 480 + i32.const 87 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -1780,13 +3219,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 87 - i32.const 0 + i32.const 480 + i32.const 88 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -1796,13 +3235,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 88 - i32.const 0 + i32.const 480 + i32.const 89 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -1812,13 +3251,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 89 - i32.const 0 + i32.const 480 + i32.const 90 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -1828,13 +3267,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 90 - i32.const 0 + i32.const 480 + i32.const 91 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -1844,13 +3283,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 91 - i32.const 0 + i32.const 480 + i32.const 92 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -1860,13 +3299,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 92 - i32.const 0 + i32.const 480 + i32.const 93 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -1874,13 +3313,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 94 - i32.const 0 + i32.const 480 + i32.const 95 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -1888,13 +3327,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 95 - i32.const 0 + i32.const 480 + i32.const 96 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -1902,13 +3341,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 96 - i32.const 0 + i32.const 480 + i32.const 97 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -1916,13 +3355,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 97 - i32.const 0 + i32.const 480 + i32.const 98 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -1930,13 +3369,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 98 - i32.const 0 + i32.const 480 + i32.const 99 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -1944,13 +3383,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 100 - i32.const 0 + i32.const 480 + i32.const 101 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -1958,13 +3397,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 101 - i32.const 0 + i32.const 480 + i32.const 102 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -1972,13 +3411,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 102 - i32.const 0 + i32.const 480 + i32.const 103 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -1986,13 +3425,13 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 103 - i32.const 0 + i32.const 480 + i32.const 104 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2000,43 +3439,43 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 104 - i32.const 0 + i32.const 480 + i32.const 105 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1 call $~lib/dataview/DataView#getUint64 i64.const 6864441868736323830 i64.ne if i32.const 0 - i32.const 288 - i32.const 106 - i32.const 0 + i32.const 480 + i32.const 107 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 0 call $~lib/dataview/DataView#getUint64 i64.const -657428103485373601 i64.ne if i32.const 0 - i32.const 288 - i32.const 107 - i32.const 0 + i32.const 480 + i32.const 108 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 f32.const 1.5976661625240943e-18 i32.const 1 call $~lib/dataview/DataView#setFloat32 - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2044,17 +3483,17 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 110 - i32.const 0 + i32.const 480 + i32.const 111 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 f32.const 1976281973381696323584 i32.const 0 call $~lib/dataview/DataView#setFloat32 - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2062,66 +3501,66 @@ f32.ne if i32.const 0 - i32.const 288 - i32.const 113 - i32.const 0 + i32.const 480 + i32.const 114 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 f64.const -1094252199637739024055454e124 i32.const 1 call $~lib/dataview/DataView#setFloat64 - global.get $std/dataview/view + local.get $0 i32.const 1 call $~lib/dataview/DataView#getFloat64 f64.const -1094252199637739024055454e124 f64.ne if i32.const 0 - i32.const 288 - i32.const 116 - i32.const 0 + i32.const 480 + i32.const 117 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 f64.const 6.022586634778589e-103 i32.const 0 call $~lib/dataview/DataView#setFloat64 - global.get $std/dataview/view + local.get $0 i32.const 0 call $~lib/dataview/DataView#getFloat64 f64.const 6.022586634778589e-103 f64.ne if i32.const 0 - i32.const 288 - i32.const 119 - i32.const 0 + i32.const 480 + i32.const 120 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 call $~lib/dataview/DataView#setInt8 - global.get $std/dataview/view + local.get $0 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const 108 i32.ne if i32.const 0 - i32.const 288 - i32.const 122 - i32.const 0 + i32.const 480 + i32.const 123 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const -13360 i32.const 1 call $~lib/dataview/DataView#setInt16 - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -2131,17 +3570,17 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 125 - i32.const 0 + i32.const 480 + i32.const 126 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 14689 i32.const 0 call $~lib/dataview/DataView#setInt16 - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -2151,17 +3590,17 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 128 - i32.const 0 + i32.const 480 + i32.const 129 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 1204680201 i32.const 1 call $~lib/dataview/DataView#setInt32 - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -2169,17 +3608,17 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 131 - i32.const 0 + i32.const 480 + i32.const 132 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 660673230 i32.const 0 call $~lib/dataview/DataView#setInt32 - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -2187,66 +3626,66 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 134 - i32.const 0 + i32.const 480 + i32.const 135 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i64.const -3290739641816099749 i32.const 1 call $~lib/dataview/DataView#setInt64 - global.get $std/dataview/view + local.get $0 i32.const 1 call $~lib/dataview/DataView#getInt64 i64.const -3290739641816099749 i64.ne if i32.const 0 - i32.const 288 - i32.const 137 - i32.const 0 + i32.const 480 + i32.const 138 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i64.const 8178932412950708047 i32.const 0 call $~lib/dataview/DataView#setInt64 - global.get $std/dataview/view + local.get $0 i32.const 0 call $~lib/dataview/DataView#getInt64 i64.const 8178932412950708047 i64.ne if i32.const 0 - i32.const 288 - i32.const 140 - i32.const 0 + i32.const 480 + i32.const 141 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 call $~lib/dataview/DataView#setUint8 - global.get $std/dataview/view + local.get $0 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 238 i32.ne if i32.const 0 - i32.const 288 - i32.const 143 - i32.const 0 + i32.const 480 + i32.const 144 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 58856 i32.const 1 call $~lib/dataview/DataView#setUint16 - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2256,17 +3695,17 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 146 - i32.const 0 + i32.const 480 + i32.const 147 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const 60400 i32.const 0 call $~lib/dataview/DataView#setUint16 - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2276,17 +3715,17 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 149 - i32.const 0 + i32.const 480 + i32.const 150 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const -846805744 i32.const 1 call $~lib/dataview/DataView#setUint32 - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2294,17 +3733,17 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 152 - i32.const 0 + i32.const 480 + i32.const 153 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i32.const -1510791631 i32.const 0 call $~lib/dataview/DataView#setUint32 - global.get $std/dataview/view + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2312,79 +3751,328 @@ i32.ne if i32.const 0 - i32.const 288 - i32.const 155 - i32.const 0 + i32.const 480 + i32.const 156 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i64.const 2334704782995986958 i32.const 1 call $~lib/dataview/DataView#setUint64 - global.get $std/dataview/view + local.get $0 i32.const 1 call $~lib/dataview/DataView#getUint64 i64.const 2334704782995986958 i64.ne if i32.const 0 - i32.const 288 - i32.const 158 - i32.const 0 + i32.const 480 + i32.const 159 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $0 i64.const -7123186897289856329 i32.const 0 call $~lib/dataview/DataView#setUint64 - global.get $std/dataview/view + local.get $0 i32.const 0 call $~lib/dataview/DataView#getUint64 i64.const -7123186897289856329 i64.ne if i32.const 0 - i32.const 288 - i32.const 161 - i32.const 0 + i32.const 480 + i32.const 162 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 1 global.set $~lib/argc - global.get $std/dataview/array - i32.load + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $4 call $~lib/dataview/DataView#constructor|trampoline - global.set $std/dataview/view - global.get $std/dataview/view + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset if i32.const 0 - i32.const 288 - i32.const 164 - i32.const 0 + i32.const 480 + i32.const 165 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.load offset=8 i32.const 8 i32.ne if i32.const 0 - i32.const 288 - i32.const 165 + i32.const 480 + i32.const 166 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + ) + (func $start (; 57 ;) (type $FUNCSIG$v) + call $start:std/dataview + ) + (func $~lib/rt/pure/markGray (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (; 59 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 60 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 61 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__visit (; 62 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.const 556 + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $0 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $1 + i32.const 1 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + block $tablify|0 + local.get $1 + i32.const 3 + i32.sub + br_table $case2|0 $case3|0 $case4|0 $tablify|0 + end + br $case5|0 + end + local.get $0 + call $~lib/rt/pure/decrement + br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 232 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/markGray + br $break|0 + end + local.get $0 + call $~lib/rt/pure/scan + br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/pure/scanBlack + end + br $break|0 + end + local.get $0 + call $~lib/rt/pure/collectWhite + br $break|0 + end + i32.const 0 + i32.const 232 + i32.const 97 + i32.const 24 call $~lib/builtins/abort unreachable end ) - (func $start (; 33 ;) (type $FUNCSIG$v) - call $start:std/dataview + (func $~lib/rt/__visit_members (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit + end + return + end + unreachable ) - (func $null (; 34 ;) (type $FUNCSIG$v) + (func $null (; 64 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/dataview.ts b/tests/compiler/std/dataview.ts index 95eb5767..309ab77d 100644 --- a/tests/compiler/std/dataview.ts +++ b/tests/compiler/std/dataview.ts @@ -1,165 +1,167 @@ -var array = new Uint8Array(8); +{ + let array = new Uint8Array(8); -array[0] = 246; -array[1] = 224; -array[2] = 88; -array[3] = 159; -array[4] = 130; -array[5] = 101; -array[6] = 67; -array[7] = 95; + array[0] = 246; + array[1] = 224; + array[2] = 88; + array[3] = 159; + array[4] = 130; + array[5] = 101; + array[6] = 67; + array[7] = 95; -var view = new DataView(array.buffer, array.byteOffset, array.byteLength); + let view = new DataView(array.buffer, array.byteOffset, array.byteLength); -assert(view.getFloat32(0, true) === -4.592586247781397e-20); -assert(view.getFloat32(1, true) === -2.3413961970849473e-37); -assert(view.getFloat32(2, true) === 7.710587701863113e+22); -assert(view.getFloat32(3, true) === 229.51023864746094); -assert(view.getFloat32(4, true) === 14079802746555335000.0); + assert(view.getFloat32(0, true) === -4.592586247781397e-20); + assert(view.getFloat32(1, true) === -2.3413961970849473e-37); + assert(view.getFloat32(2, true) === 7.710587701863113e+22); + assert(view.getFloat32(3, true) === 229.51023864746094); + assert(view.getFloat32(4, true) === 14079802746555335000.0); -assert(view.getFloat32(0, false) === -2.2751405188178955e+33); -assert(view.getFloat32(1, false) === -62437351080004160000.0); -assert(view.getFloat32(2, false) === 1403059112509440.0); -assert(view.getFloat32(3, false) === -5.522466503261712e-20); -assert(view.getFloat32(4, false) === -1.6843597451835358e-37); + assert(view.getFloat32(0, false) === -2.2751405188178955e+33); + assert(view.getFloat32(1, false) === -62437351080004160000.0); + assert(view.getFloat32(2, false) === 1403059112509440.0); + assert(view.getFloat32(3, false) === -5.522466503261712e-20); + assert(view.getFloat32(4, false) === -1.6843597451835358e-37); -assert(view.getFloat64(0, true) === 7.936550095674706e+150); -assert(view.getFloat64(0, false) === -4.1177747581885255e+264); + assert(view.getFloat64(0, true) === 7.936550095674706e+150); + assert(view.getFloat64(0, false) === -4.1177747581885255e+264); -assert(view.getInt8(0) === -10); -assert(view.getInt8(1) === -32); -assert(view.getInt8(2) === 88); -assert(view.getInt8(3) === -97); -assert(view.getInt8(4) === -126); -assert(view.getInt8(5) === 101); -assert(view.getInt8(6) === 67); -assert(view.getInt8(7) === 95); + assert(view.getInt8(0) === -10); + assert(view.getInt8(1) === -32); + assert(view.getInt8(2) === 88); + assert(view.getInt8(3) === -97); + assert(view.getInt8(4) === -126); + assert(view.getInt8(5) === 101); + assert(view.getInt8(6) === 67); + assert(view.getInt8(7) === 95); -assert(view.getInt16(0, true) === -7946); -assert(view.getInt16(1, true) === 22752); -assert(view.getInt16(2, true) === -24744); -assert(view.getInt16(3, true) === -32097); -assert(view.getInt16(4, true) === 25986); -assert(view.getInt16(5, true) === 17253); -assert(view.getInt16(6, true) === 24387); + assert(view.getInt16(0, true) === -7946); + assert(view.getInt16(1, true) === 22752); + assert(view.getInt16(2, true) === -24744); + assert(view.getInt16(3, true) === -32097); + assert(view.getInt16(4, true) === 25986); + assert(view.getInt16(5, true) === 17253); + assert(view.getInt16(6, true) === 24387); -assert(view.getInt16(0, false) === -2336); -assert(view.getInt16(1, false) === -8104); -assert(view.getInt16(2, false) === 22687); -assert(view.getInt16(3, false) === -24702); -assert(view.getInt16(4, false) === -32155); -assert(view.getInt16(5, false) === 25923); -assert(view.getInt16(6, false) === 17247); + assert(view.getInt16(0, false) === -2336); + assert(view.getInt16(1, false) === -8104); + assert(view.getInt16(2, false) === 22687); + assert(view.getInt16(3, false) === -24702); + assert(view.getInt16(4, false) === -32155); + assert(view.getInt16(5, false) === 25923); + assert(view.getInt16(6, false) === 17247); -assert(view.getInt32(0, true) === -1621565194); -assert(view.getInt32(1, true) === -2103486240); -assert(view.getInt32(2, true) === 1703059288); -assert(view.getInt32(3, true) === 1130726047); -assert(view.getInt32(4, true) === 1598252418); + assert(view.getInt32(0, true) === -1621565194); + assert(view.getInt32(1, true) === -2103486240); + assert(view.getInt32(2, true) === 1703059288); + assert(view.getInt32(3, true) === 1130726047); + assert(view.getInt32(4, true) === 1598252418); -assert(view.getInt32(0, false) === -153069409); -assert(view.getInt32(1, false) === -531062910); -assert(view.getInt32(2, false) === 1486848613); -assert(view.getInt32(3, false) === -1618844349); -assert(view.getInt32(4, false) === -2107292833); + assert(view.getInt32(0, false) === -153069409); + assert(view.getInt32(1, false) === -531062910); + assert(view.getInt32(2, false) === 1486848613); + assert(view.getInt32(3, false) === -1618844349); + assert(view.getInt32(4, false) === -2107292833); -assert(view.getInt64(0, true) === 6864441868736323830); -assert(view.getInt64(0, false) === -657428103485373601); + assert(view.getInt64(0, true) === 6864441868736323830); + assert(view.getInt64(0, false) === -657428103485373601); -assert(view.getUint8(0) === 246); -assert(view.getUint8(1) === 224); -assert(view.getUint8(2) === 88); -assert(view.getUint8(3) === 159); -assert(view.getUint8(4) === 130); -assert(view.getUint8(5) === 101); -assert(view.getUint8(6) === 67); -assert(view.getUint8(7) === 95); + assert(view.getUint8(0) === 246); + assert(view.getUint8(1) === 224); + assert(view.getUint8(2) === 88); + assert(view.getUint8(3) === 159); + assert(view.getUint8(4) === 130); + assert(view.getUint8(5) === 101); + assert(view.getUint8(6) === 67); + assert(view.getUint8(7) === 95); -assert(view.getUint16(0, true) === 57590); -assert(view.getUint16(1, true) === 22752); -assert(view.getUint16(2, true) === 40792); -assert(view.getUint16(3, true) === 33439); -assert(view.getUint16(4, true) === 25986); -assert(view.getUint16(5, true) === 17253); -assert(view.getUint16(6, true) === 24387); + assert(view.getUint16(0, true) === 57590); + assert(view.getUint16(1, true) === 22752); + assert(view.getUint16(2, true) === 40792); + assert(view.getUint16(3, true) === 33439); + assert(view.getUint16(4, true) === 25986); + assert(view.getUint16(5, true) === 17253); + assert(view.getUint16(6, true) === 24387); -assert(view.getUint16(0, false) === 63200); -assert(view.getUint16(1, false) === 57432); -assert(view.getUint16(2, false) === 22687); -assert(view.getUint16(3, false) === 40834); -assert(view.getUint16(4, false) === 33381); -assert(view.getUint16(5, false) === 25923); -assert(view.getUint16(6, false) === 17247); + assert(view.getUint16(0, false) === 63200); + assert(view.getUint16(1, false) === 57432); + assert(view.getUint16(2, false) === 22687); + assert(view.getUint16(3, false) === 40834); + assert(view.getUint16(4, false) === 33381); + assert(view.getUint16(5, false) === 25923); + assert(view.getUint16(6, false) === 17247); -assert(view.getUint32(0, true) === 2673402102); -assert(view.getUint32(1, true) === 2191481056); -assert(view.getUint32(2, true) === 1703059288); -assert(view.getUint32(3, true) === 1130726047); -assert(view.getUint32(4, true) === 1598252418); + assert(view.getUint32(0, true) === 2673402102); + assert(view.getUint32(1, true) === 2191481056); + assert(view.getUint32(2, true) === 1703059288); + assert(view.getUint32(3, true) === 1130726047); + assert(view.getUint32(4, true) === 1598252418); -assert(view.getUint32(0, false) === 4141897887); -assert(view.getUint32(1, false) === 3763904386); -assert(view.getUint32(2, false) === 1486848613); -assert(view.getUint32(3, false) === 2676122947); -assert(view.getUint32(4, false) === 2187674463); + assert(view.getUint32(0, false) === 4141897887); + assert(view.getUint32(1, false) === 3763904386); + assert(view.getUint32(2, false) === 1486848613); + assert(view.getUint32(3, false) === 2676122947); + assert(view.getUint32(4, false) === 2187674463); -assert(view.getUint64(0, true) === 6864441868736323830); -assert(view.getUint64(0, false) === 17789315970224178015); + assert(view.getUint64(0, true) === 6864441868736323830); + assert(view.getUint64(0, false) === 17789315970224178015); -view.setFloat32(0, 1.5976661625240943e-18, true); -assert(view.getFloat32(0, true) === 1.5976661625240943e-18); + view.setFloat32(0, 1.5976661625240943e-18, true); + assert(view.getFloat32(0, true) === 1.5976661625240943e-18); -view.setFloat32(0, 1.9762819733816963e+21, false); -assert(view.getFloat32(0, false) === 1.9762819733816963e+21); + view.setFloat32(0, 1.9762819733816963e+21, false); + assert(view.getFloat32(0, false) === 1.9762819733816963e+21); -view.setFloat64(0, -1.094252199637739e+148, true); -assert(view.getFloat64(0, true) === -1.094252199637739e+148); + view.setFloat64(0, -1.094252199637739e+148, true); + assert(view.getFloat64(0, true) === -1.094252199637739e+148); -view.setFloat64(0, 6.022586634778589e-103, false); -assert(view.getFloat64(0, false) === 6.022586634778589e-103); + view.setFloat64(0, 6.022586634778589e-103, false); + assert(view.getFloat64(0, false) === 6.022586634778589e-103); -view.setInt8(0, 108); -assert(view.getInt8(0) === 108); + view.setInt8(0, 108); + assert(view.getInt8(0) === 108); -view.setInt16(0, -13360, true); -assert(view.getInt16(0, true) === -13360); + view.setInt16(0, -13360, true); + assert(view.getInt16(0, true) === -13360); -view.setInt16(0, 14689, false); -assert(view.getInt16(0, false) === 14689); + view.setInt16(0, 14689, false); + assert(view.getInt16(0, false) === 14689); -view.setInt32(0, 1204680201, true); -assert(view.getInt32(0, true) === 1204680201); + view.setInt32(0, 1204680201, true); + assert(view.getInt32(0, true) === 1204680201); -view.setInt32(0, 660673230, false); -assert(view.getInt32(0, false) === 660673230); + view.setInt32(0, 660673230, false); + assert(view.getInt32(0, false) === 660673230); -view.setInt64(0, -3290739641816099749, true); -assert(view.getInt64(0, true) === -3290739641816099749); + view.setInt64(0, -3290739641816099749, true); + assert(view.getInt64(0, true) === -3290739641816099749); -view.setInt64(0, 8178932412950708047, false); -assert(view.getInt64(0, false) === 8178932412950708047); + view.setInt64(0, 8178932412950708047, false); + assert(view.getInt64(0, false) === 8178932412950708047); -view.setUint8(0, 238); -assert(view.getUint8(0) === 238); + view.setUint8(0, 238); + assert(view.getUint8(0) === 238); -view.setUint16(0, 58856, true); -assert(view.getUint16(0, true) === 58856); + view.setUint16(0, 58856, true); + assert(view.getUint16(0, true) === 58856); -view.setUint16(0, 60400, false); -assert(view.getUint16(0, false) === 60400); + view.setUint16(0, 60400, false); + assert(view.getUint16(0, false) === 60400); -view.setUint32(0, 3448161552, true); -assert(view.getUint32(0, true) === 3448161552); + view.setUint32(0, 3448161552, true); + assert(view.getUint32(0, true) === 3448161552); -view.setUint32(0, 2784175665, false); -assert(view.getUint32(0, false) === 2784175665); + view.setUint32(0, 2784175665, false); + assert(view.getUint32(0, false) === 2784175665); -view.setUint64(0, 2334704782995986958, true); -assert(view.getUint64(0, true) === 2334704782995986958); + view.setUint64(0, 2334704782995986958, true); + assert(view.getUint64(0, true) === 2334704782995986958); -view.setUint64(0, 11323557176419695287, false); -assert(view.getUint64(0, false) === 11323557176419695287); + view.setUint64(0, 11323557176419695287, false); + assert(view.getUint64(0, false) === 11323557176419695287); -view = new DataView(array.buffer); -assert(view.byteOffset == 0); -assert(view.byteLength == 8); + view = new DataView(array.buffer); + assert(view.byteOffset == 0); + assert(view.byteLength == 8); +} diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 698af249..841a3664 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -2,9 +2,11 @@ (type $FUNCSIG$iii (func (param 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$v (func)) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$fiii (func (param i32 i32 i32) (result f32))) (type $FUNCSIG$diii (func (param i32 i32 i32) (result f64))) @@ -13,26 +15,36 @@ (type $FUNCSIG$viifi (func (param i32 i32 f32 i32))) (type $FUNCSIG$viidi (func (param i32 i32 f64 i32))) (type $FUNCSIG$viiji (func (param i32 i32 i64 i32))) - (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) + (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) + (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) + (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) (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\00") (data (i32.const 56) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 112) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 168) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 224) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") - (data (i32.const 272) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 216) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 264) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 320) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 360) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 416) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") + (data (i32.const 464) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00") + (data (i32.const 512) "\05\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\00\00\00\02\00\00\00\10\00\00\00\00\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $std/dataview/array (mut i32) (i32.const 0)) - (global $std/dataview/view (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 320)) + (global $~lib/rt/__rtti_base i32 (i32.const 512)) + (global $~lib/heap/__heap_base i32 (i32.const 556)) (export "memory" (memory $0)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -40,25 +52,870 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 276 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + i32.const 16 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 278 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 291 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=16 + local.set $6 + local.get $1 + i32.load offset=20 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=20 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=16 + end + local.get $1 + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + i32.eq + if + block $~lib/rt/tlsf/SETHEAD|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + end + local.get $7 + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $9 + block $~lib/rt/tlsf/SETSL|inlined.1 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + end + local.get $9 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 204 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 206 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load + end + local.set $6 + local.get $6 + i32.load + local.set $3 + local.get $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 227 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + local.get $3 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $6 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + local.get $8 + i32.const 16 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 243 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 259 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $11 + i32.store offset=20 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=16 + end + block $~lib/rt/tlsf/SETHEAD|inlined.2 + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end local.get $0 - i32.const 1073741808 - i32.gt_u + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + block $~lib/rt/tlsf/SETSL|inlined.2 + local.get $0 + local.set $13 + local.get $9 + local.set $12 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + end + ) + (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 385 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 395 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 407 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 8 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + memory.size + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end if unreachable end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 + local.set $3 local.get $3 - local.get $4 - i32.gt_u - select + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $7 + loop $repeat|1 + local.get $7 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $repeat|1 + unreachable + end + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 i32.add i32.const 15 i32.add @@ -66,71 +923,2238 @@ i32.const -1 i32.xor i32.and - local.set $5 memory.size - local.set $6 - local.get $5 - local.get $6 i32.const 16 i32.shl - i32.gt_u + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u if - local.get $5 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 + i32.const 176 + i32.const 128 + i32.const 447 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 i32.shr_u local.set $3 - local.get $6 - local.tee $4 - local.get $3 - local.tee $7 - local.get $4 - local.get $7 - i32.gt_s - select + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end local.set $4 + i32.const 31 local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 337 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 350 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + memory.size + local.set $2 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 memory.grow i32.const 0 i32.lt_s if - local.get $3 - memory.grow + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 364 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if i32.const 0 - i32.lt_s + i32.const 128 + i32.const 477 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 479 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + call $~lib/rt/rtrace/onalloc + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/rtrace/onincrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/tlsf/freeBlock (; 17 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 531 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + ) + (func $~lib/rt/__typeinfo (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 280 + i32.const 336 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/util/memory/memcpy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $break|0 + loop $continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end if - unreachable + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end end end - local.get $5 - global.set $~lib/rt/stub/offset + local.get $0 + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + block $break|1 + loop $continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 + end + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + block + local.get $1 + i32.load + local.set $3 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|3 + end + end + end + br $break|2 + unreachable + end + unreachable + end + block + local.get $1 + i32.load + local.set $3 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + end + end + br $break|2 + unreachable + end + unreachable + end + block + local.get $1 + i32.load + local.set $3 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end + end + end + br $break|2 + unreachable + end + unreachable + end + end local.get $2 i32.const 16 - i32.sub - local.set $8 - local.get $8 - local.get $1 - i32.store offset=8 - local.get $8 - local.get $0 - i32.store offset=12 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end local.get $2 + i32.const 8 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end ) - (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $4 + local.get $3 + i32.add + local.get $5 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $5 + local.get $3 + i32.add + local.get $4 + i32.le_u + end + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|0 + loop $continue|0 + local.get $5 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + br $continue|0 + end + end + end + block $break|1 + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 + end + end + end + end + block $break|2 + loop $continue|2 + local.get $3 + if + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end + end + else + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + block $break|3 + loop $continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + end + block $break|5 + loop $continue|5 + local.get $3 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + end + ) + (func $~lib/rt/tlsf/__free (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 561 + i32.const 13 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 562 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/stub/__release (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) - nop + (func $~lib/rt/pure/growRoots (; 22 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + global.get $~lib/rt/pure/CUR + local.get $0 + i32.sub + local.set $1 + local.get $1 + i32.const 2 + i32.mul + local.tee $2 + i32.const 64 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + local.set $4 + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onfree + local.get $5 + local.get $0 + local.get $1 + call $~lib/memory/memory.copy + local.get $0 + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onalloc + local.get $0 + call $~lib/rt/tlsf/__free + end + local.get $5 + global.set $~lib/rt/pure/ROOTS + local.get $5 + local.get $1 + i32.add + global.set $~lib/rt/pure/CUR + local.get $5 + local.get $4 + i32.add + global.set $~lib/rt/pure/END ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/pure/appendRoot (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.set $1 + local.get $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.and + local.set $2 + local.get $0 + call $~lib/rt/rtrace/ondecrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 115 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + else + local.get $0 + i32.const -2147483648 + i32.const 0 + i32.or + i32.const 0 + i32.or + i32.store offset=4 + end + else + local.get $2 + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 124 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + i32.eqz + if + local.get $0 + i32.const -2147483648 + i32.const 805306368 + i32.or + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + else + local.get $0 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + end + end + ) + (func $~lib/rt/pure/__release (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 26 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -152,7 +3176,7 @@ i32.shl local.tee $1 i32.const 0 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.set $3 block (result i32) local.get $0 @@ -160,8 +3184,8 @@ if i32.const 12 i32.const 2 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $0 end local.get $0 @@ -185,10 +3209,10 @@ i32.ne if local.get $5 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain drop local.get $4 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release end local.get $5 end @@ -201,15 +3225,15 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Uint8Array#constructor (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else i32.const 12 i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain end local.get $1 i32.const 0 @@ -217,14 +3241,14 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint8Array#__set (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 128 - i32.const 184 + i32.const 280 + i32.const 376 i32.const 115 i32.const 44 call $~lib/builtins/abort @@ -237,18 +3261,18 @@ local.get $2 i32.store8 ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 29 ;) (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 (; 8 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/dataview/DataView#constructor (; 30 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $1 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain drop local.get $3 i32.const 1073741808 @@ -262,10 +3286,10 @@ i32.or if local.get $1 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release block i32.const 24 - i32.const 240 + i32.const 432 i32.const 21 i32.const 6 call $~lib/builtins/abort @@ -280,8 +3304,8 @@ if i32.const 12 i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain local.set $0 end local.get $0 @@ -305,10 +3329,10 @@ i32.ne if local.get $5 - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain drop local.get $4 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release end local.get $5 end @@ -324,26 +3348,26 @@ local.get $3 i32.store offset=8 local.get $1 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $0 ) - (func $~lib/typedarray/Uint8Array#get:buffer (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:buffer (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load - call $~lib/rt/stub/__retain + call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/polyfills/bswap (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const -16711936 i32.and @@ -357,7 +3381,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getFloat32 (; 13 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $~lib/dataview/DataView#getFloat32 (; 35 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $1 i32.const 0 i32.lt_s @@ -369,8 +3393,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 44 i32.const 6 call $~lib/builtins/abort @@ -393,7 +3417,7 @@ f32.reinterpret_i32 end ) - (func $~lib/polyfills/bswap (; 14 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 36 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -432,7 +3456,7 @@ i64.rotr return ) - (func $~lib/dataview/DataView#getFloat64 (; 15 ;) (type $FUNCSIG$diii) (param $0 i32) (param $1 i32) (param $2 i32) (result f64) + (func $~lib/dataview/DataView#getFloat64 (; 37 ;) (type $FUNCSIG$diii) (param $0 i32) (param $1 i32) (param $2 i32) (result f64) local.get $1 i32.const 0 i32.lt_s @@ -444,8 +3468,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 58 i32.const 7 call $~lib/builtins/abort @@ -468,14 +3492,14 @@ f64.reinterpret_i64 end ) - (func $~lib/dataview/DataView#getInt8 (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getInt8 (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 69 i32.const 49 call $~lib/builtins/abort @@ -487,7 +3511,7 @@ i32.add i32.load8_s ) - (func $~lib/polyfills/bswap (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 8 i32.shl @@ -503,7 +3527,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getInt16 (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt16 (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -516,8 +3540,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 77 i32.const 7 call $~lib/builtins/abort @@ -537,7 +3561,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/polyfills/bswap (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const -16711936 i32.and @@ -551,7 +3575,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getInt32 (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getInt32 (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -564,8 +3588,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 86 i32.const 7 call $~lib/builtins/abort @@ -585,7 +3609,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/polyfills/bswap (; 21 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 43 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -624,7 +3648,7 @@ i64.rotr return ) - (func $~lib/dataview/DataView#getInt64 (; 22 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) + (func $~lib/dataview/DataView#getInt64 (; 44 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $1 i32.const 0 @@ -637,8 +3661,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 180 i32.const 6 call $~lib/builtins/abort @@ -658,14 +3682,14 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint8 (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/dataview/DataView#getUint8 (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 92 i32.const 49 call $~lib/builtins/abort @@ -677,7 +3701,7 @@ i32.add i32.load8_u ) - (func $~lib/polyfills/bswap (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/polyfills/bswap (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 8 i32.shl @@ -691,7 +3715,7 @@ i32.or return ) - (func $~lib/dataview/DataView#getUint16 (; 25 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint16 (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -704,8 +3728,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 100 i32.const 6 call $~lib/builtins/abort @@ -725,7 +3749,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint32 (; 26 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/dataview/DataView#getUint32 (; 48 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 0 @@ -738,8 +3762,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 109 i32.const 6 call $~lib/builtins/abort @@ -759,7 +3783,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#getUint64 (; 27 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) + (func $~lib/dataview/DataView#getUint64 (; 49 ;) (type $FUNCSIG$jiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i64) (local $3 i64) local.get $1 i32.const 0 @@ -772,8 +3796,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 189 i32.const 6 call $~lib/builtins/abort @@ -793,7 +3817,7 @@ call $~lib/polyfills/bswap end ) - (func $~lib/dataview/DataView#setFloat32 (; 28 ;) (type $FUNCSIG$viifi) (param $0 i32) (param $1 i32) (param $2 f32) (param $3 i32) + (func $~lib/dataview/DataView#setFloat32 (; 50 ;) (type $FUNCSIG$viifi) (param $0 i32) (param $1 i32) (param $2 f32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -805,8 +3829,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 118 i32.const 6 call $~lib/builtins/abort @@ -831,7 +3855,7 @@ i32.store end ) - (func $~lib/dataview/DataView#setFloat64 (; 29 ;) (type $FUNCSIG$viidi) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 i32) + (func $~lib/dataview/DataView#setFloat64 (; 51 ;) (type $FUNCSIG$viidi) (param $0 i32) (param $1 i32) (param $2 f64) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -843,8 +3867,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 127 i32.const 6 call $~lib/builtins/abort @@ -869,14 +3893,14 @@ i64.store end ) - (func $~lib/dataview/DataView#setInt8 (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setInt8 (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 133 i32.const 49 call $~lib/builtins/abort @@ -889,7 +3913,7 @@ local.get $2 i32.store8 ) - (func $~lib/dataview/DataView#setInt16 (; 31 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setInt16 (; 53 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -901,8 +3925,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 141 i32.const 6 call $~lib/builtins/abort @@ -921,7 +3945,7 @@ end i32.store16 ) - (func $~lib/dataview/DataView#setInt32 (; 32 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setInt32 (; 54 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -933,8 +3957,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 149 i32.const 6 call $~lib/builtins/abort @@ -953,7 +3977,7 @@ end i32.store ) - (func $~lib/dataview/DataView#setInt64 (; 33 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) + (func $~lib/dataview/DataView#setInt64 (; 55 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -965,8 +3989,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 198 i32.const 6 call $~lib/builtins/abort @@ -985,14 +4009,14 @@ end i64.store ) - (func $~lib/dataview/DataView#setUint8 (; 34 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/dataview/DataView#setUint8 (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 154 i32.const 49 call $~lib/builtins/abort @@ -1005,7 +4029,7 @@ local.get $2 i32.store8 ) - (func $~lib/dataview/DataView#setUint16 (; 35 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setUint16 (; 57 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1017,8 +4041,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 162 i32.const 6 call $~lib/builtins/abort @@ -1037,7 +4061,7 @@ end i32.store16 ) - (func $~lib/dataview/DataView#setUint32 (; 36 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/dataview/DataView#setUint32 (; 58 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1049,8 +4073,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 170 i32.const 6 call $~lib/builtins/abort @@ -1069,7 +4093,7 @@ end i32.store ) - (func $~lib/dataview/DataView#setUint64 (; 37 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) + (func $~lib/dataview/DataView#setUint64 (; 59 ;) (type $FUNCSIG$viiji) (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) local.get $1 i32.const 0 i32.lt_s @@ -1081,8 +4105,8 @@ i32.gt_s i32.or if - i32.const 128 - i32.const 240 + i32.const 280 + i32.const 432 i32.const 206 i32.const 6 call $~lib/builtins/abort @@ -1101,7 +4125,7 @@ end i64.store ) - (func $~lib/dataview/DataView#constructor|trampoline (; 38 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/dataview/DataView#constructor|trampoline (; 60 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) block $2of2 block $1of2 block $0of2 @@ -1126,78 +4150,70 @@ local.get $3 call $~lib/dataview/DataView#constructor ) - (func $~lib/dataview/DataView#get:byteOffset (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/dataview/DataView#get:byteOffset (; 61 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/dataview/DataView#get:byteLength (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/dataview/DataView#get:byteLength (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $start:std/dataview (; 41 ;) (type $FUNCSIG$v) + (func $start:std/dataview (; 63 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + (local $3 i32) + (local $4 i32) i32.const 0 i32.const 8 call $~lib/typedarray/Uint8Array#constructor - global.set $std/dataview/array - global.get $std/dataview/array + local.set $0 + local.get $0 i32.const 0 i32.const 246 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $0 i32.const 1 i32.const 224 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $0 i32.const 2 i32.const 88 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $0 i32.const 3 i32.const 159 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $0 i32.const 4 i32.const 130 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $0 i32.const 5 i32.const 101 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $0 i32.const 6 i32.const 67 call $~lib/typedarray/Uint8Array#__set - global.get $std/dataview/array + local.get $0 i32.const 7 i32.const 95 call $~lib/typedarray/Uint8Array#__set i32.const 0 - global.get $std/dataview/array + local.get $0 call $~lib/typedarray/Uint8Array#get:buffer - local.tee $0 - global.get $std/dataview/array + local.tee $1 + local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - global.get $std/dataview/array + local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength call $~lib/dataview/DataView#constructor - global.set $std/dataview/view - global.get $std/dataview/view + local.set $2 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -1206,13 +4222,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 14 - i32.const 0 + i32.const 480 + i32.const 15 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -1221,13 +4237,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 15 - i32.const 0 + i32.const 480 + i32.const 16 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -1236,13 +4252,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 16 - i32.const 0 + i32.const 480 + i32.const 17 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -1251,13 +4267,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 17 - i32.const 0 + i32.const 480 + i32.const 18 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -1266,13 +4282,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 18 - i32.const 0 + i32.const 480 + i32.const 19 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1281,13 +4297,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 20 - i32.const 0 + i32.const 480 + i32.const 21 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1296,13 +4312,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 21 - i32.const 0 + i32.const 480 + i32.const 22 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1311,13 +4327,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 22 - i32.const 0 + i32.const 480 + i32.const 23 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1326,13 +4342,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 23 - i32.const 0 + i32.const 480 + i32.const 24 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1341,13 +4357,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 24 - i32.const 0 + i32.const 480 + i32.const 25 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat64 @@ -1356,13 +4372,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 26 - i32.const 0 + i32.const 480 + i32.const 27 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat64 @@ -1371,13 +4387,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 27 - i32.const 0 + i32.const 480 + i32.const 28 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const -10 @@ -1385,13 +4401,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 29 - i32.const 0 + i32.const 480 + i32.const 30 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 call $~lib/dataview/DataView#getInt8 i32.const -32 @@ -1399,13 +4415,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 30 - i32.const 0 + i32.const 480 + i32.const 31 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 call $~lib/dataview/DataView#getInt8 i32.const 88 @@ -1413,13 +4429,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 31 - i32.const 0 + i32.const 480 + i32.const 32 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 call $~lib/dataview/DataView#getInt8 i32.const -97 @@ -1427,13 +4443,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 32 - i32.const 0 + i32.const 480 + i32.const 33 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 call $~lib/dataview/DataView#getInt8 i32.const -126 @@ -1441,13 +4457,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 33 - i32.const 0 + i32.const 480 + i32.const 34 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 5 call $~lib/dataview/DataView#getInt8 i32.const 101 @@ -1455,13 +4471,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 34 - i32.const 0 + i32.const 480 + i32.const 35 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 6 call $~lib/dataview/DataView#getInt8 i32.const 67 @@ -1469,13 +4485,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 35 - i32.const 0 + i32.const 480 + i32.const 36 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 7 call $~lib/dataview/DataView#getInt8 i32.const 95 @@ -1483,13 +4499,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 36 - i32.const 0 + i32.const 480 + i32.const 37 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1502,13 +4518,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 38 - i32.const 0 + i32.const 480 + i32.const 39 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1521,13 +4537,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 39 - i32.const 0 + i32.const 480 + i32.const 40 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1540,13 +4556,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 40 - i32.const 0 + i32.const 480 + i32.const 41 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1559,13 +4575,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 41 - i32.const 0 + i32.const 480 + i32.const 42 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1578,13 +4594,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 42 - i32.const 0 + i32.const 480 + i32.const 43 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1597,13 +4613,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 43 - i32.const 0 + i32.const 480 + i32.const 44 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -1616,13 +4632,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 44 - i32.const 0 + i32.const 480 + i32.const 45 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1635,13 +4651,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 46 - i32.const 0 + i32.const 480 + i32.const 47 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1654,13 +4670,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 47 - i32.const 0 + i32.const 480 + i32.const 48 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1673,13 +4689,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 48 - i32.const 0 + i32.const 480 + i32.const 49 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1692,13 +4708,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 49 - i32.const 0 + i32.const 480 + i32.const 50 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1711,13 +4727,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 50 - i32.const 0 + i32.const 480 + i32.const 51 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1730,13 +4746,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 51 - i32.const 0 + i32.const 480 + i32.const 52 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -1749,13 +4765,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 52 - i32.const 0 + i32.const 480 + i32.const 53 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -1764,13 +4780,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 54 - i32.const 0 + i32.const 480 + i32.const 55 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -1779,13 +4795,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 55 - i32.const 0 + i32.const 480 + i32.const 56 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -1794,13 +4810,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 56 - i32.const 0 + i32.const 480 + i32.const 57 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -1809,13 +4825,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 57 - i32.const 0 + i32.const 480 + i32.const 58 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -1824,13 +4840,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 58 - i32.const 0 + i32.const 480 + i32.const 59 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -1839,13 +4855,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 60 - i32.const 0 + i32.const 480 + i32.const 61 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -1854,13 +4870,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 61 - i32.const 0 + i32.const 480 + i32.const 62 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -1869,13 +4885,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 62 - i32.const 0 + i32.const 480 + i32.const 63 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -1884,13 +4900,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 63 - i32.const 0 + i32.const 480 + i32.const 64 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -1899,13 +4915,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 64 - i32.const 0 + i32.const 480 + i32.const 65 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt64 @@ -1914,13 +4930,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 66 - i32.const 0 + i32.const 480 + i32.const 67 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt64 @@ -1929,13 +4945,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 67 - i32.const 0 + i32.const 480 + i32.const 68 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 246 @@ -1943,13 +4959,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 69 - i32.const 0 + i32.const 480 + i32.const 70 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 call $~lib/dataview/DataView#getUint8 i32.const 224 @@ -1957,13 +4973,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 70 - i32.const 0 + i32.const 480 + i32.const 71 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 call $~lib/dataview/DataView#getUint8 i32.const 88 @@ -1971,13 +4987,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 71 - i32.const 0 + i32.const 480 + i32.const 72 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 call $~lib/dataview/DataView#getUint8 i32.const 159 @@ -1985,13 +5001,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 72 - i32.const 0 + i32.const 480 + i32.const 73 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 call $~lib/dataview/DataView#getUint8 i32.const 130 @@ -1999,13 +5015,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 73 - i32.const 0 + i32.const 480 + i32.const 74 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 5 call $~lib/dataview/DataView#getUint8 i32.const 101 @@ -2013,13 +5029,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 74 - i32.const 0 + i32.const 480 + i32.const 75 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 6 call $~lib/dataview/DataView#getUint8 i32.const 67 @@ -2027,13 +5043,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 75 - i32.const 0 + i32.const 480 + i32.const 76 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 7 call $~lib/dataview/DataView#getUint8 i32.const 95 @@ -2041,13 +5057,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 76 - i32.const 0 + i32.const 480 + i32.const 77 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2058,13 +5074,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 78 - i32.const 0 + i32.const 480 + i32.const 79 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2075,13 +5091,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 79 - i32.const 0 + i32.const 480 + i32.const 80 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2092,13 +5108,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 80 - i32.const 0 + i32.const 480 + i32.const 81 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2109,13 +5125,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 81 - i32.const 0 + i32.const 480 + i32.const 82 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2126,13 +5142,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 82 - i32.const 0 + i32.const 480 + i32.const 83 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2143,13 +5159,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 83 - i32.const 0 + i32.const 480 + i32.const 84 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2160,13 +5176,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 84 - i32.const 0 + i32.const 480 + i32.const 85 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2177,13 +5193,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 86 - i32.const 0 + i32.const 480 + i32.const 87 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2194,13 +5210,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 87 - i32.const 0 + i32.const 480 + i32.const 88 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2211,13 +5227,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 88 - i32.const 0 + i32.const 480 + i32.const 89 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2228,13 +5244,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 89 - i32.const 0 + i32.const 480 + i32.const 90 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2245,13 +5261,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 90 - i32.const 0 + i32.const 480 + i32.const 91 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2262,13 +5278,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 91 - i32.const 0 + i32.const 480 + i32.const 92 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2279,13 +5295,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 92 - i32.const 0 + i32.const 480 + i32.const 93 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2294,13 +5310,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 94 - i32.const 0 + i32.const 480 + i32.const 95 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2309,13 +5325,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 95 - i32.const 0 + i32.const 480 + i32.const 96 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2324,13 +5340,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 96 - i32.const 0 + i32.const 480 + i32.const 97 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2339,13 +5355,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 97 - i32.const 0 + i32.const 480 + i32.const 98 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2354,13 +5370,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 98 - i32.const 0 + i32.const 480 + i32.const 99 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2369,13 +5385,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 100 - i32.const 0 + i32.const 480 + i32.const 101 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2384,13 +5400,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 101 - i32.const 0 + i32.const 480 + i32.const 102 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2399,13 +5415,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 102 - i32.const 0 + i32.const 480 + i32.const 103 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2414,13 +5430,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 103 - i32.const 0 + i32.const 480 + i32.const 104 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2429,13 +5445,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 104 - i32.const 0 + i32.const 480 + i32.const 105 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint64 @@ -2444,13 +5460,13 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 106 - i32.const 0 + i32.const 480 + i32.const 107 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint64 @@ -2459,18 +5475,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 107 - i32.const 0 + i32.const 480 + i32.const 108 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 f32.const 1.5976661625240943e-18 i32.const 1 call $~lib/dataview/DataView#setFloat32 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2479,18 +5495,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 110 - i32.const 0 + i32.const 480 + i32.const 111 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 f32.const 1976281973381696323584 i32.const 0 call $~lib/dataview/DataView#setFloat32 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2499,18 +5515,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 113 - i32.const 0 + i32.const 480 + i32.const 114 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 f64.const -1094252199637739024055454e124 i32.const 1 call $~lib/dataview/DataView#setFloat64 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat64 @@ -2519,18 +5535,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 116 - i32.const 0 + i32.const 480 + i32.const 117 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 f64.const 6.022586634778589e-103 i32.const 0 call $~lib/dataview/DataView#setFloat64 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat64 @@ -2539,17 +5555,17 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 119 - i32.const 0 + i32.const 480 + i32.const 120 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 108 call $~lib/dataview/DataView#setInt8 - global.get $std/dataview/view + local.get $2 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const 108 @@ -2557,18 +5573,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 122 - i32.const 0 + i32.const 480 + i32.const 123 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const -13360 i32.const 1 call $~lib/dataview/DataView#setInt16 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -2581,18 +5597,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 125 - i32.const 0 + i32.const 480 + i32.const 126 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 14689 i32.const 0 call $~lib/dataview/DataView#setInt16 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -2605,18 +5621,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 128 - i32.const 0 + i32.const 480 + i32.const 129 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1204680201 i32.const 1 call $~lib/dataview/DataView#setInt32 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -2625,18 +5641,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 131 - i32.const 0 + i32.const 480 + i32.const 132 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 660673230 i32.const 0 call $~lib/dataview/DataView#setInt32 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -2645,18 +5661,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 134 - i32.const 0 + i32.const 480 + i32.const 135 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i64.const -3290739641816099749 i32.const 1 call $~lib/dataview/DataView#setInt64 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt64 @@ -2665,18 +5681,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 137 - i32.const 0 + i32.const 480 + i32.const 138 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i64.const 8178932412950708047 i32.const 0 call $~lib/dataview/DataView#setInt64 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt64 @@ -2685,17 +5701,17 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 140 - i32.const 0 + i32.const 480 + i32.const 141 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 238 call $~lib/dataview/DataView#setUint8 - global.get $std/dataview/view + local.get $2 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 238 @@ -2703,18 +5719,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 143 - i32.const 0 + i32.const 480 + i32.const 144 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 58856 i32.const 1 call $~lib/dataview/DataView#setUint16 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2725,18 +5741,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 146 - i32.const 0 + i32.const 480 + i32.const 147 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 60400 i32.const 0 call $~lib/dataview/DataView#setUint16 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2747,18 +5763,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 149 - i32.const 0 + i32.const 480 + i32.const 150 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const -846805744 i32.const 1 call $~lib/dataview/DataView#setUint32 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2767,18 +5783,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 152 - i32.const 0 + i32.const 480 + i32.const 153 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const -1510791631 i32.const 0 call $~lib/dataview/DataView#setUint32 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2787,18 +5803,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 155 - i32.const 0 + i32.const 480 + i32.const 156 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i64.const 2334704782995986958 i32.const 1 call $~lib/dataview/DataView#setUint64 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint64 @@ -2807,18 +5823,18 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 158 - i32.const 0 + i32.const 480 + i32.const 159 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 i32.const 0 i64.const -7123186897289856329 i32.const 0 call $~lib/dataview/DataView#setUint64 - global.get $std/dataview/view + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint64 @@ -2827,9 +5843,9 @@ i32.eqz if i32.const 0 - i32.const 288 - i32.const 161 - i32.const 0 + i32.const 480 + i32.const 162 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -2838,53 +5854,387 @@ i32.const 1 global.set $~lib/argc i32.const 0 - global.get $std/dataview/array + local.get $0 call $~lib/typedarray/Uint8Array#get:buffer - local.tee $1 + local.tee $3 i32.const 0 i32.const 0 call $~lib/dataview/DataView#constructor|trampoline end - local.set $2 - global.get $std/dataview/view - call $~lib/rt/stub/__release + local.set $4 local.get $2 + call $~lib/rt/pure/__release + local.get $4 end - global.set $std/dataview/view - global.get $std/dataview/view + local.set $2 + local.get $2 call $~lib/dataview/DataView#get:byteOffset i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 288 - i32.const 164 - i32.const 0 + i32.const 480 + i32.const 165 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $std/dataview/view + local.get $2 call $~lib/dataview/DataView#get:byteLength i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 288 - i32.const 165 - i32.const 0 + i32.const 480 + i32.const 166 + i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/stub/__release + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release ) - (func $start (; 42 ;) (type $FUNCSIG$v) + (func $start (; 64 ;) (type $FUNCSIG$v) call $start:std/dataview ) - (func $null (; 43 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/markGray (; 65 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/pure/scanBlack (; 66 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 67 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 68 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__visit (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $3 + local.get $3 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $3 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $3 + i32.const 4 + i32.eq + br_if $case3|0 + local.get $3 + i32.const 5 + i32.eq + br_if $case4|0 + br $case5|0 + end + block + local.get $2 + call $~lib/rt/pure/decrement + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + call $~lib/rt/pure/scan + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 + unreachable + end + unreachable + end + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 97 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $~lib/rt/__visit_members (; 70 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block + end + block $switch$1$leave + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default + end + block + block + return + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + ) + (func $null (; 71 ;) (type $FUNCSIG$v) ) )