Created
October 11, 2019 18:01
-
-
Save vird/6b86745d44f141586dfd0d90b79ee284 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(module | |
(type $FUNCSIG$iii (func (param 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$vi (func (param i32))) | |
(type $FUNCSIG$viii (func (param i32 i32 i32))) | |
(type $FUNCSIG$i (func (result i32))) | |
(type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) | |
(memory $0 1) | |
(data (i32.const 8) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") | |
(data (i32.const 24) "\06\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\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93\04\00\00\02\00\00\00") | |
(table $0 1 funcref) | |
(elem (i32.const 0) $null) | |
(global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) | |
(global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) | |
(global $~lib/gc/gc.auto (mut i32) (i32.const 1)) | |
(global $~lib/rt/pure/ROOTS (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/ASC_SHRINK_LEVEL i32 (i32.const 0)) | |
(global $~lib/rt/__rtti_base i32 (i32.const 24)) | |
(global $~lib/heap/__heap_base i32 (i32.const 76)) | |
(global $index/Struct i32 (i32.const 3)) | |
(export "__start" (func $start)) | |
(export "memory" (memory $0)) | |
(export "__alloc" (func $~lib/rt/tlsf/__alloc)) | |
(export "__retain" (func $~lib/rt/pure/__retain)) | |
(export "__release" (func $~lib/rt/pure/__release)) | |
(export "__collect" (func $~lib/rt/pure/__collect)) | |
(export "__rtti_base" (global $~lib/rt/__rtti_base)) | |
(export "Struct" (global $index/Struct)) | |
(export "Struct#get:a" (func $Struct#get:a)) | |
(export "Struct#set:a" (func $Struct#set:a)) | |
(export "main" (func $index/main)) | |
(func $~lib/rt/tlsf/removeBlock (; 0 ;) (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.get $1 | |
i32.load | |
local.set $2 | |
local.get $2 | |
i32.const 1 | |
i32.and | |
i32.eqz | |
if | |
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 | |
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 | |
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 | |
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 | |
i32.eq | |
if | |
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 | |
local.get $7 | |
i32.eqz | |
if | |
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 | |
local.set $9 | |
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 | |
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 (; 1 ;) (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 | |
unreachable | |
end | |
local.get $1 | |
i32.load | |
local.set $2 | |
local.get $2 | |
i32.const 1 | |
i32.and | |
i32.eqz | |
if | |
unreachable | |
end | |
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 | |
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 | |
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 | |
local.set $4 | |
local.get $4 | |
i32.load | |
local.set $5 | |
end | |
end | |
local.get $2 | |
i32.const 2 | |
i32.and | |
if | |
local.get $1 | |
local.set $6 | |
local.get $6 | |
i32.const 4 | |
i32.sub | |
i32.load | |
local.set $6 | |
local.get $6 | |
i32.load | |
local.set $3 | |
local.get $3 | |
i32.const 1 | |
i32.and | |
i32.eqz | |
if | |
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 | |
unreachable | |
end | |
local.get $1 | |
i32.const 16 | |
i32.add | |
local.get $8 | |
i32.add | |
local.get $4 | |
i32.eq | |
i32.eqz | |
if | |
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 | |
unreachable | |
end | |
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 | |
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 | |
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 | |
local.get $0 | |
local.get $0 | |
i32.load | |
i32.const 1 | |
local.get $9 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $0 | |
local.set $13 | |
local.get $9 | |
local.set $12 | |
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 | |
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 | |
) | |
(func $~lib/rt/tlsf/addMemory (; 2 ;) (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 | |
unreachable | |
end | |
local.get $0 | |
local.set $3 | |
local.get $3 | |
i32.load offset=1568 | |
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 | |
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 | |
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 16 | |
i32.const 1 | |
i32.shl | |
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 | |
local.get $0 | |
local.set $9 | |
local.get $4 | |
local.set $3 | |
local.get $9 | |
local.get $3 | |
i32.store offset=1568 | |
local.get $0 | |
local.get $8 | |
call $~lib/rt/tlsf/insertBlock | |
i32.const 1 | |
) | |
(func $~lib/rt/tlsf/initializeRoot (; 3 ;) (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 | |
local.get $0 | |
local.set $3 | |
local.get $3 | |
i32.const 0 | |
i32.store | |
local.get $3 | |
local.set $5 | |
i32.const 0 | |
local.set $4 | |
local.get $5 | |
local.get $4 | |
i32.store offset=1568 | |
block $break|0 | |
i32.const 0 | |
local.set $5 | |
loop $loop|0 | |
local.get $5 | |
i32.const 23 | |
i32.lt_u | |
i32.eqz | |
br_if $break|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 | |
block $break|1 | |
i32.const 0 | |
local.set $7 | |
loop $loop|1 | |
local.get $7 | |
i32.const 16 | |
i32.lt_u | |
i32.eqz | |
br_if $break|1 | |
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 | |
local.get $7 | |
i32.const 1 | |
i32.add | |
local.set $7 | |
br $loop|1 | |
end | |
unreachable | |
end | |
local.get $5 | |
i32.const 1 | |
i32.add | |
local.set $5 | |
br $loop|0 | |
end | |
unreachable | |
end | |
local.get $3 | |
local.get $0 | |
i32.const 1572 | |
i32.add | |
i32.const 15 | |
i32.add | |
i32.const 15 | |
i32.const -1 | |
i32.xor | |
i32.and | |
memory.size | |
i32.const 16 | |
i32.shl | |
call $~lib/rt/tlsf/addMemory | |
drop | |
local.get $3 | |
global.set $~lib/rt/tlsf/ROOT | |
) | |
(func $~lib/rt/tlsf/prepareSize (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) | |
(local $1 i32) | |
(local $2 i32) | |
local.get $0 | |
i32.const 1073741808 | |
i32.ge_u | |
if | |
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 (; 5 ;) (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 | |
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 | |
unreachable | |
end | |
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 | |
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 | |
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 | |
local.set $6 | |
local.get $6 | |
i32.eqz | |
if | |
unreachable | |
end | |
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 | |
local.set $7 | |
end | |
else | |
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 | |
local.set $7 | |
end | |
local.get $7 | |
) | |
(func $~lib/rt/pure/markGray (; 6 ;) (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/tlsf/freeBlock (; 7 ;) (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 | |
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 | |
) | |
(func $~lib/rt/pure/scanBlack (; 8 ;) (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 (; 9 ;) (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 (; 10 ;) (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/__collect (; 11 ;) (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 | |
local.get $0 | |
local.set $1 | |
block $break|0 | |
local.get $1 | |
local.set $2 | |
global.get $~lib/rt/pure/CUR | |
local.set $3 | |
loop $loop|0 | |
local.get $2 | |
local.get $3 | |
i32.lt_u | |
i32.eqz | |
br_if $break|0 | |
local.get $2 | |
i32.load | |
local.set $4 | |
local.get $4 | |
i32.load offset=4 | |
local.set $5 | |
local.get $5 | |
i32.const 1879048192 | |
i32.and | |
i32.const 805306368 | |
i32.eq | |
if (result i32) | |
local.get $5 | |
i32.const 268435455 | |
i32.and | |
i32.const 0 | |
i32.gt_u | |
else | |
i32.const 0 | |
end | |
if | |
local.get $4 | |
call $~lib/rt/pure/markGray | |
local.get $1 | |
local.get $4 | |
i32.store | |
local.get $1 | |
i32.const 4 | |
i32.add | |
local.set $1 | |
else | |
local.get $5 | |
i32.const 1879048192 | |
i32.and | |
i32.const 0 | |
i32.eq | |
if (result i32) | |
local.get $5 | |
i32.const 268435455 | |
i32.and | |
i32.eqz | |
else | |
i32.const 0 | |
end | |
if | |
global.get $~lib/rt/tlsf/ROOT | |
local.get $4 | |
call $~lib/rt/tlsf/freeBlock | |
else | |
local.get $4 | |
local.get $5 | |
i32.const -2147483648 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.store offset=4 | |
end | |
end | |
local.get $2 | |
i32.const 4 | |
i32.add | |
local.set $2 | |
br $loop|0 | |
end | |
unreachable | |
end | |
local.get $1 | |
global.set $~lib/rt/pure/CUR | |
block $break|1 | |
local.get $0 | |
local.set $5 | |
loop $loop|1 | |
local.get $5 | |
local.get $1 | |
i32.lt_u | |
i32.eqz | |
br_if $break|1 | |
local.get $5 | |
i32.load | |
call $~lib/rt/pure/scan | |
local.get $5 | |
i32.const 4 | |
i32.add | |
local.set $5 | |
br $loop|1 | |
end | |
unreachable | |
end | |
block $break|2 | |
local.get $0 | |
local.set $5 | |
loop $loop|2 | |
local.get $5 | |
local.get $1 | |
i32.lt_u | |
i32.eqz | |
br_if $break|2 | |
local.get $5 | |
i32.load | |
local.set $4 | |
local.get $4 | |
local.get $4 | |
i32.load offset=4 | |
i32.const -2147483648 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.store offset=4 | |
local.get $4 | |
call $~lib/rt/pure/collectWhite | |
local.get $5 | |
i32.const 4 | |
i32.add | |
local.set $5 | |
br $loop|2 | |
end | |
unreachable | |
end | |
local.get $0 | |
global.set $~lib/rt/pure/CUR | |
) | |
(func $~lib/rt/tlsf/growMemory (; 12 ;) (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.const 536870904 | |
i32.lt_u | |
if | |
local.get $1 | |
i32.const 1 | |
i32.const 27 | |
local.get $1 | |
i32.clz | |
i32.sub | |
i32.shl | |
i32.const 1 | |
i32.sub | |
i32.add | |
local.set $1 | |
end | |
memory.size | |
local.set $2 | |
local.get $1 | |
i32.const 16 | |
local.get $2 | |
i32.const 16 | |
i32.shl | |
i32.const 16 | |
i32.sub | |
local.get $0 | |
local.set $3 | |
local.get $3 | |
i32.load offset=1568 | |
i32.ne | |
i32.shl | |
i32.add | |
local.set $1 | |
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 $4 | |
local.get $2 | |
local.tee $3 | |
local.get $4 | |
local.tee $5 | |
local.get $3 | |
local.get $5 | |
i32.gt_s | |
select | |
local.set $6 | |
local.get $6 | |
memory.grow | |
i32.const 0 | |
i32.lt_s | |
if | |
local.get $4 | |
memory.grow | |
i32.const 0 | |
i32.lt_s | |
if | |
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 (; 13 ;) (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 | |
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 | |
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 | |
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 | |
i32.load | |
i32.const 2 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.store | |
end | |
) | |
(func $~lib/rt/tlsf/allocateBlock (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) | |
(local $2 i32) | |
(local $3 i32) | |
global.get $~lib/rt/tlsf/collectLock | |
i32.eqz | |
i32.eqz | |
if | |
unreachable | |
end | |
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 | |
global.get $~lib/gc/gc.auto | |
if | |
i32.const 1 | |
global.set $~lib/rt/tlsf/collectLock | |
call $~lib/rt/pure/__collect | |
i32.const 0 | |
global.set $~lib/rt/tlsf/collectLock | |
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 | |
unreachable | |
end | |
end | |
else | |
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 | |
unreachable | |
end | |
end | |
end | |
local.get $3 | |
i32.load | |
i32.const -4 | |
i32.and | |
local.get $2 | |
i32.ge_u | |
i32.eqz | |
if | |
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 | |
) | |
(func $~lib/rt/tlsf/__alloc (; 15 ;) (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 (; 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 -268435456 | |
i32.and | |
local.get $1 | |
i32.const 1 | |
i32.add | |
i32.const -268435456 | |
i32.and | |
i32.eq | |
i32.eqz | |
if | |
unreachable | |
end | |
local.get $0 | |
local.get $1 | |
i32.const 1 | |
i32.add | |
i32.store offset=4 | |
local.get $0 | |
i32.load | |
i32.const 1 | |
i32.and | |
i32.eqz | |
i32.eqz | |
if | |
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/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 | |
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 | |
i32.eqz | |
br_if $break|0 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $2 | |
i32.const 1 | |
i32.sub | |
local.set $2 | |
br $continue|0 | |
end | |
unreachable | |
end | |
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 | |
i32.eqz | |
br_if $break|1 | |
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 | |
unreachable | |
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 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
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 | |
local.get $1 | |
i32.load | |
local.set $3 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
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 | |
i32.eqz | |
br_if $break|3 | |
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 | |
unreachable | |
end | |
br $break|2 | |
end | |
local.get $1 | |
i32.load | |
local.set $3 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
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 | |
i32.eqz | |
br_if $break|4 | |
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 | |
unreachable | |
end | |
br $break|2 | |
end | |
local.get $1 | |
i32.load | |
local.set $3 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
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 | |
i32.eqz | |
br_if $break|5 | |
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 | |
unreachable | |
end | |
br $break|2 | |
end | |
end | |
local.get $2 | |
i32.const 16 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
local.get $2 | |
i32.const 8 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
local.get $2 | |
i32.const 4 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
local.get $2 | |
i32.const 2 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
local.get $2 | |
i32.const 1 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
) | |
(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 | |
i32.eqz | |
br_if $break|0 | |
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 | |
local.get $5 | |
local.tee $6 | |
i32.const 1 | |
i32.add | |
local.set $5 | |
local.get $6 | |
local.get $4 | |
local.tee $6 | |
i32.const 1 | |
i32.add | |
local.set $4 | |
local.get $6 | |
i32.load8_u | |
i32.store8 | |
br $continue|0 | |
end | |
unreachable | |
end | |
block $break|1 | |
loop $continue|1 | |
local.get $3 | |
i32.const 8 | |
i32.ge_u | |
i32.eqz | |
br_if $break|1 | |
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 | |
unreachable | |
end | |
end | |
block $break|2 | |
loop $continue|2 | |
local.get $3 | |
i32.eqz | |
br_if $break|2 | |
local.get $5 | |
local.tee $6 | |
i32.const 1 | |
i32.add | |
local.set $5 | |
local.get $6 | |
local.get $4 | |
local.tee $6 | |
i32.const 1 | |
i32.add | |
local.set $4 | |
local.get $6 | |
i32.load8_u | |
i32.store8 | |
local.get $3 | |
i32.const 1 | |
i32.sub | |
local.set $3 | |
br $continue|2 | |
end | |
unreachable | |
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 | |
i32.eqz | |
br_if $break|3 | |
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 | |
unreachable | |
end | |
block $break|4 | |
loop $continue|4 | |
local.get $3 | |
i32.const 8 | |
i32.ge_u | |
i32.eqz | |
br_if $break|4 | |
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 | |
unreachable | |
end | |
end | |
block $break|5 | |
loop $continue|5 | |
local.get $3 | |
i32.eqz | |
br_if $break|5 | |
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 | |
unreachable | |
end | |
end | |
end | |
) | |
(func $~lib/rt/tlsf/__free (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) | |
global.get $~lib/rt/tlsf/ROOT | |
i32.eqz | |
if | |
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 | |
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 (; 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 | |
local.get $0 | |
local.get $1 | |
call $~lib/memory/memory.copy | |
local.get $0 | |
if | |
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 (; 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 | |
i32.load | |
i32.const 1 | |
i32.and | |
i32.eqz | |
i32.eqz | |
if | |
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 | |
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/rt/__allocArray (; 26 ;) (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/tlsf/__alloc | |
local.set $4 | |
local.get $0 | |
local.get $1 | |
i32.shl | |
local.set $5 | |
local.get $5 | |
i32.const 0 | |
call $~lib/rt/tlsf/__alloc | |
local.set $6 | |
local.get $4 | |
local.get $6 | |
call $~lib/rt/pure/__retain | |
i32.store | |
local.get $4 | |
local.get $6 | |
i32.store offset=4 | |
local.get $4 | |
local.get $5 | |
i32.store offset=8 | |
local.get $4 | |
local.get $0 | |
i32.store offset=12 | |
local.get $3 | |
if | |
local.get $6 | |
local.get $3 | |
local.get $5 | |
call $~lib/memory/memory.copy | |
end | |
local.get $4 | |
) | |
(func $index/Struct#constructor (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) | |
local.get $0 | |
i32.eqz | |
if | |
i32.const 4 | |
i32.const 3 | |
call $~lib/rt/tlsf/__alloc | |
call $~lib/rt/pure/__retain | |
local.set $0 | |
end | |
local.get $0 | |
i32.const 0 | |
i32.store | |
local.get $0 | |
) | |
(func $~lib/rt/tlsf/reallocateBlock (; 28 ;) (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.get $2 | |
call $~lib/rt/tlsf/prepareSize | |
local.set $3 | |
local.get $1 | |
i32.load | |
local.set $4 | |
local.get $4 | |
i32.const 1 | |
i32.and | |
i32.eqz | |
if (result i32) | |
local.get $1 | |
i32.load offset=4 | |
i32.const -268435456 | |
i32.and | |
i32.eqz | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
if | |
unreachable | |
end | |
local.get $3 | |
local.get $4 | |
i32.const -4 | |
i32.and | |
i32.le_u | |
if | |
local.get $0 | |
local.get $1 | |
local.get $3 | |
call $~lib/rt/tlsf/prepareBlock | |
local.get $1 | |
local.get $2 | |
i32.store offset=12 | |
local.get $1 | |
return | |
end | |
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 | |
local.set $6 | |
local.get $6 | |
i32.load | |
local.set $7 | |
local.get $7 | |
i32.const 1 | |
i32.and | |
if | |
local.get $4 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.const 16 | |
i32.add | |
local.get $7 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.add | |
local.set $5 | |
local.get $5 | |
local.get $3 | |
i32.ge_u | |
if | |
local.get $0 | |
local.get $6 | |
call $~lib/rt/tlsf/removeBlock | |
local.get $1 | |
local.get $4 | |
i32.const 3 | |
i32.and | |
local.get $5 | |
i32.or | |
i32.store | |
local.get $1 | |
local.get $2 | |
i32.store offset=12 | |
local.get $0 | |
local.get $1 | |
local.get $3 | |
call $~lib/rt/tlsf/prepareBlock | |
local.get $1 | |
return | |
end | |
end | |
local.get $0 | |
local.get $2 | |
call $~lib/rt/tlsf/allocateBlock | |
local.set $8 | |
local.get $8 | |
local.get $1 | |
i32.load offset=8 | |
i32.store offset=8 | |
local.get $8 | |
i32.const 16 | |
i32.add | |
local.get $1 | |
i32.const 16 | |
i32.add | |
local.get $2 | |
call $~lib/memory/memory.copy | |
local.get $1 | |
local.get $4 | |
i32.const 1 | |
i32.or | |
i32.store | |
local.get $0 | |
local.get $1 | |
call $~lib/rt/tlsf/insertBlock | |
local.get $8 | |
) | |
(func $~lib/rt/tlsf/__realloc (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) | |
global.get $~lib/rt/tlsf/ROOT | |
i32.eqz | |
if | |
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 | |
unreachable | |
end | |
global.get $~lib/rt/tlsf/ROOT | |
local.get $0 | |
i32.const 16 | |
i32.sub | |
local.get $1 | |
call $~lib/rt/tlsf/reallocateBlock | |
i32.const 16 | |
i32.add | |
) | |
(func $~lib/memory/memory.fill (; 30 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
(local $7 i32) | |
(local $8 i64) | |
block $~lib/util/memory/memset|inlined.0 | |
local.get $0 | |
local.set $5 | |
local.get $1 | |
local.set $4 | |
local.get $2 | |
local.set $3 | |
local.get $3 | |
i32.eqz | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
local.get $5 | |
local.get $4 | |
i32.store8 | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 1 | |
i32.sub | |
local.get $4 | |
i32.store8 | |
local.get $3 | |
i32.const 2 | |
i32.le_u | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
local.get $5 | |
i32.const 1 | |
i32.add | |
local.get $4 | |
i32.store8 | |
local.get $5 | |
i32.const 2 | |
i32.add | |
local.get $4 | |
i32.store8 | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 2 | |
i32.sub | |
local.get $4 | |
i32.store8 | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 3 | |
i32.sub | |
local.get $4 | |
i32.store8 | |
local.get $3 | |
i32.const 6 | |
i32.le_u | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
local.get $5 | |
i32.const 3 | |
i32.add | |
local.get $4 | |
i32.store8 | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 4 | |
i32.sub | |
local.get $4 | |
i32.store8 | |
local.get $3 | |
i32.const 8 | |
i32.le_u | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
i32.const 0 | |
local.get $5 | |
i32.sub | |
i32.const 3 | |
i32.and | |
local.set $6 | |
local.get $5 | |
local.get $6 | |
i32.add | |
local.set $5 | |
local.get $3 | |
local.get $6 | |
i32.sub | |
local.set $3 | |
local.get $3 | |
i32.const -4 | |
i32.and | |
local.set $3 | |
i32.const -1 | |
i32.const 255 | |
i32.div_u | |
local.get $4 | |
i32.const 255 | |
i32.and | |
i32.mul | |
local.set $7 | |
local.get $5 | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 4 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $3 | |
i32.const 8 | |
i32.le_u | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
local.get $5 | |
i32.const 4 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
i32.const 8 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 12 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 8 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $3 | |
i32.const 24 | |
i32.le_u | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
local.get $5 | |
i32.const 12 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
i32.const 16 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
i32.const 20 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
i32.const 24 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 28 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 24 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 20 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 16 | |
i32.sub | |
local.get $7 | |
i32.store | |
i32.const 24 | |
local.get $5 | |
i32.const 4 | |
i32.and | |
i32.add | |
local.set $6 | |
local.get $5 | |
local.get $6 | |
i32.add | |
local.set $5 | |
local.get $3 | |
local.get $6 | |
i32.sub | |
local.set $3 | |
local.get $7 | |
i64.extend_i32_u | |
local.get $7 | |
i64.extend_i32_u | |
i64.const 32 | |
i64.shl | |
i64.or | |
local.set $8 | |
block $break|0 | |
loop $continue|0 | |
local.get $3 | |
i32.const 32 | |
i32.ge_u | |
i32.eqz | |
br_if $break|0 | |
local.get $5 | |
local.get $8 | |
i64.store | |
local.get $5 | |
i32.const 8 | |
i32.add | |
local.get $8 | |
i64.store | |
local.get $5 | |
i32.const 16 | |
i32.add | |
local.get $8 | |
i64.store | |
local.get $5 | |
i32.const 24 | |
i32.add | |
local.get $8 | |
i64.store | |
local.get $3 | |
i32.const 32 | |
i32.sub | |
local.set $3 | |
local.get $5 | |
i32.const 32 | |
i32.add | |
local.set $5 | |
br $continue|0 | |
end | |
unreachable | |
end | |
end | |
) | |
(func $~lib/array/ensureSize (; 31 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
local.get $0 | |
i32.load offset=8 | |
local.set $3 | |
local.get $1 | |
local.get $3 | |
local.get $2 | |
i32.shr_u | |
i32.gt_u | |
if | |
local.get $1 | |
i32.const 1073741808 | |
local.get $2 | |
i32.shr_u | |
i32.gt_u | |
if | |
unreachable | |
end | |
local.get $0 | |
i32.load | |
local.set $4 | |
local.get $1 | |
local.get $2 | |
i32.shl | |
local.set $5 | |
local.get $4 | |
local.get $5 | |
call $~lib/rt/tlsf/__realloc | |
local.set $6 | |
local.get $6 | |
local.get $3 | |
i32.add | |
i32.const 0 | |
local.get $5 | |
local.get $3 | |
i32.sub | |
call $~lib/memory/memory.fill | |
local.get $6 | |
local.get $4 | |
i32.ne | |
if | |
local.get $0 | |
local.get $6 | |
call $~lib/rt/pure/__retain | |
i32.store | |
local.get $0 | |
local.get $6 | |
i32.store offset=4 | |
end | |
local.get $0 | |
local.get $5 | |
i32.store offset=8 | |
end | |
) | |
(func $~lib/array/Array<index/Struct>#push (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
local.get $1 | |
call $~lib/rt/pure/__retain | |
drop | |
local.get $0 | |
i32.load offset=12 | |
local.set $2 | |
local.get $2 | |
i32.const 1 | |
i32.add | |
local.set $3 | |
local.get $0 | |
local.get $3 | |
i32.const 2 | |
call $~lib/array/ensureSize | |
local.get $0 | |
i32.load offset=4 | |
local.get $2 | |
i32.const 2 | |
i32.shl | |
i32.add | |
local.get $1 | |
call $~lib/rt/pure/__retain | |
i32.store | |
local.get $0 | |
local.get $3 | |
i32.store offset=12 | |
local.get $3 | |
local.set $4 | |
local.get $1 | |
call $~lib/rt/pure/__release | |
local.get $4 | |
) | |
(func $~lib/array/Array<index/Struct>#get:length (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) | |
local.get $0 | |
i32.load offset=12 | |
) | |
(func $~lib/array/Array<index/Struct>#__unchecked_get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) | |
local.get $0 | |
i32.load offset=4 | |
local.get $1 | |
i32.const 2 | |
i32.shl | |
i32.add | |
i32.load | |
call $~lib/rt/pure/__retain | |
) | |
(func $~lib/array/Array<index/Struct>#__get (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) | |
(local $2 i32) | |
local.get $1 | |
local.get $0 | |
i32.load offset=12 | |
i32.ge_u | |
if | |
unreachable | |
end | |
local.get $0 | |
local.get $1 | |
call $~lib/array/Array<index/Struct>#__unchecked_get | |
local.set $2 | |
local.get $2 | |
i32.eqz | |
if | |
local.get $2 | |
call $~lib/rt/pure/__release | |
unreachable | |
end | |
local.get $2 | |
) | |
(func $index/main (; 36 ;) (type $FUNCSIG$i) (result i32) | |
(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) | |
i32.const 0 | |
local.set $0 | |
i32.const 0 | |
i32.const 2 | |
i32.const 4 | |
i32.const 24 | |
call $~lib/rt/__allocArray | |
call $~lib/rt/pure/__retain | |
local.tee $2 | |
call $~lib/rt/pure/__retain | |
local.set $1 | |
local.get $1 | |
i32.const 0 | |
call $index/Struct#constructor | |
local.tee $3 | |
call $~lib/array/Array<index/Struct>#push | |
drop | |
local.get $1 | |
i32.const 0 | |
call $index/Struct#constructor | |
local.tee $4 | |
call $~lib/array/Array<index/Struct>#push | |
drop | |
local.get $1 | |
call $~lib/array/Array<index/Struct>#get:length | |
local.set $5 | |
block $break|0 | |
i32.const 0 | |
local.set $6 | |
loop $loop|0 | |
local.get $6 | |
local.get $5 | |
i32.lt_s | |
i32.eqz | |
br_if $break|0 | |
local.get $1 | |
local.get $6 | |
call $~lib/array/Array<index/Struct>#__get | |
local.set $7 | |
block $break|1 | |
i32.const 0 | |
local.set $8 | |
loop $loop|1 | |
local.get $8 | |
local.get $5 | |
i32.lt_s | |
i32.eqz | |
br_if $break|1 | |
block $continue|1 | |
local.get $1 | |
local.get $8 | |
call $~lib/array/Array<index/Struct>#__get | |
local.set $9 | |
local.get $6 | |
i32.const 0 | |
i32.ge_s | |
if | |
local.get $9 | |
call $~lib/rt/pure/__release | |
br $continue|1 | |
end | |
local.get $0 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
end | |
local.get $8 | |
i32.const 1 | |
i32.add | |
local.set $8 | |
local.get $9 | |
call $~lib/rt/pure/__release | |
br $loop|1 | |
end | |
unreachable | |
end | |
local.get $6 | |
i32.const 1 | |
i32.add | |
local.set $6 | |
local.get $7 | |
call $~lib/rt/pure/__release | |
br $loop|0 | |
end | |
unreachable | |
end | |
local.get $0 | |
local.set $7 | |
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 $4 | |
call $~lib/rt/pure/__release | |
local.get $7 | |
) | |
(func $start (; 37 ;) (type $FUNCSIG$v) | |
) | |
(func $~lib/rt/pure/__visit (; 38 ;) (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 | |
local.get $2 | |
call $~lib/rt/pure/decrement | |
br $break|0 | |
end | |
local.get $2 | |
i32.load offset=4 | |
i32.const 268435455 | |
i32.and | |
i32.const 0 | |
i32.gt_u | |
i32.eqz | |
if | |
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 | |
end | |
local.get $2 | |
call $~lib/rt/pure/scan | |
br $break|0 | |
end | |
local.get $2 | |
i32.load offset=4 | |
local.set $3 | |
local.get $3 | |
i32.const -268435456 | |
i32.and | |
local.get $3 | |
i32.const 1 | |
i32.add | |
i32.const -268435456 | |
i32.and | |
i32.eq | |
i32.eqz | |
if | |
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 | |
end | |
local.get $2 | |
call $~lib/rt/pure/collectWhite | |
br $break|0 | |
end | |
i32.const 0 | |
i32.eqz | |
if | |
unreachable | |
end | |
end | |
) | |
(func $~lib/array/Array<index/Struct>#__visit_impl (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
local.get $0 | |
i32.load offset=4 | |
local.set $2 | |
local.get $2 | |
local.get $0 | |
i32.load offset=12 | |
i32.const 2 | |
i32.shl | |
i32.add | |
local.set $3 | |
block $break|0 | |
loop $continue|0 | |
local.get $2 | |
local.get $3 | |
i32.lt_u | |
i32.eqz | |
br_if $break|0 | |
local.get $2 | |
i32.load | |
local.set $4 | |
local.get $4 | |
if | |
local.get $4 | |
local.get $1 | |
call $~lib/rt/pure/__visit | |
end | |
local.get $2 | |
i32.const 4 | |
i32.add | |
local.set $2 | |
br $continue|0 | |
end | |
unreachable | |
end | |
) | |
(func $~lib/array/Array<i32>#__visit_impl (; 40 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
nop | |
) | |
(func $~lib/rt/__visit_members (; 41 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
(local $2 i32) | |
block $block$4$break | |
block $switch$1$default | |
block $switch$1$case$7 | |
block $switch$1$case$6 | |
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$2 $switch$1$case$6 $switch$1$case$7 $switch$1$default | |
end | |
return | |
end | |
br $block$4$break | |
end | |
local.get $0 | |
local.get $1 | |
call $~lib/array/Array<index/Struct>#__visit_impl | |
br $block$4$break | |
end | |
local.get $0 | |
local.get $1 | |
call $~lib/array/Array<i32>#__visit_impl | |
br $block$4$break | |
end | |
unreachable | |
end | |
local.get $0 | |
i32.load | |
local.tee $2 | |
if | |
local.get $2 | |
local.get $1 | |
call $~lib/rt/pure/__visit | |
end | |
return | |
) | |
(func $null (; 42 ;) (type $FUNCSIG$v) | |
) | |
(func $Struct#get:a (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) | |
local.get $0 | |
i32.load | |
) | |
(func $Struct#set:a (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
local.get $0 | |
local.get $1 | |
i32.store | |
) | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment