Investigate custom try-catch support

This commit is contained in:
dcode
2019-06-13 15:33:43 +02:00
parent 9cc5608e5e
commit 40dd9252b3
148 changed files with 129001 additions and 96080 deletions

View File

@ -3,8 +3,8 @@
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$viii (func (param i32 i32 i32)))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32)))
@ -15,10 +15,11 @@
(data (i32.const 12) "\01\00\00\00\01")
(data (i32.const 24) "\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 72) "\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 120) "$\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 176) "\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 216) "(\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 272) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10")
(data (i32.const 120) "(\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 176) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00E\00r\00r\00o\00r")
(data (i32.const 208) "$\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 264) "\04\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")
(global $~lib/error (mut i32) (i32.const 0))
(global $rc/global-init/a (mut i32) (i32.const 0))
(global $rc/global-init/b (mut i32) (i32.const 0))
(global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0))
@ -557,27 +558,7 @@
local.get $1
call $~lib/rt/rtrace/onfree
)
(func $~lib/rt/__typeinfo (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 272
i32.load
i32.gt_u
if
i32.const 136
i32.const 192
i32.const 22
i32.const 27
call $~lib/builtins/abort
unreachable
end
local.get $0
i32.const 3
i32.shl
i32.const 276
i32.add
i32.load
)
(func $~lib/rt/tlsf/addMemory (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/rt/tlsf/addMemory (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
local.get $2
@ -691,7 +672,7 @@
local.get $1
call $~lib/rt/tlsf/insertBlock
)
(func $~lib/rt/tlsf/initializeRoot (; 12 ;) (type $FUNCSIG$v)
(func $~lib/rt/tlsf/initializeRoot (; 11 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
i32.const 1
@ -774,17 +755,16 @@
i32.const 304
global.set $~lib/rt/tlsf/ROOT
)
(func $~lib/rt/tlsf/prepareSize (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/rt/tlsf/prepareSize (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 1073741808
i32.ge_u
if
i32.const 232
i32.const 88
i32.const 447
i32.const 29
call $~lib/builtins/abort
unreachable
i32.const 136
call $~lib/error/Error#constructor
global.set $~lib/error
i32.const 0
return
end
local.get $0
i32.const 15
@ -798,7 +778,7 @@
i32.gt_u
select
)
(func $~lib/rt/tlsf/searchBlock (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/searchBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
local.get $1
i32.const 256
@ -929,7 +909,7 @@
end
end
)
(func $~lib/rt/tlsf/growMemory (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/tlsf/growMemory (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
memory.size
local.tee $2
@ -966,7 +946,7 @@
i32.shl
call $~lib/rt/tlsf/addMemory
)
(func $~lib/rt/tlsf/prepareBlock (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/rt/tlsf/prepareBlock (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
local.get $1
@ -1042,13 +1022,19 @@
i32.store
end
)
(func $~lib/rt/tlsf/allocateBlock (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/allocateBlock (; 16 ;) (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
local.set $3
global.get $~lib/error
if
i32.const 0
return
end
local.get $0
local.get $3
call $~lib/rt/tlsf/searchBlock
local.tee $2
i32.eqz
@ -1101,27 +1087,75 @@
call $~lib/rt/rtrace/onalloc
local.get $2
)
(func $~lib/rt/tlsf/__alloc (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(func $~lib/rt/tlsf/__alloc (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
global.get $~lib/rt/tlsf/ROOT
local.tee $1
i32.eqz
if
local.tee $2
if (result i32)
local.get $2
else
call $~lib/rt/tlsf/initializeRoot
global.get $~lib/rt/tlsf/ROOT
local.set $1
end
local.get $1
local.get $0
call $~lib/rt/tlsf/allocateBlock
local.tee $0
i32.const 0
local.set $0
global.get $~lib/error
if
i32.const 0
return
end
local.get $0
local.get $1
i32.store offset=8
local.get $0
i32.const 16
i32.add
)
(func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/error/Error#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
call $~lib/rt/pure/__retain
drop
i32.const 12
i32.const 3
call $~lib/rt/tlsf/__alloc
call $~lib/rt/pure/__retain
local.tee $1
i32.const 192
call $~lib/rt/pure/__retain
i32.store
local.get $1
i32.const 24
call $~lib/rt/pure/__retain
i32.store offset=4
local.get $1
local.get $0
i32.store offset=8
local.get $0
call $~lib/rt/pure/__release
local.get $1
)
(func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 264
i32.load
i32.gt_u
if
i32.const 224
call $~lib/error/Error#constructor
global.set $~lib/error
i32.const 0
return
end
local.get $0
i32.const 3
i32.shl
i32.const 268
i32.add
i32.load
)
(func $~lib/memory/memory.copy (; 20 ;) (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
@ -1296,7 +1330,7 @@
end
end
)
(func $~lib/rt/tlsf/__free (; 20 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/tlsf/__free (; 21 ;) (type $FUNCSIG$vi) (param $0 i32)
global.get $~lib/rt/tlsf/ROOT
i32.eqz
if
@ -1329,7 +1363,7 @@
i32.sub
call $~lib/rt/tlsf/freeBlock
)
(func $~lib/rt/pure/growRoots (; 21 ;) (type $FUNCSIG$v)
(func $~lib/rt/pure/growRoots (; 22 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
(local $2 i32)
@ -1348,8 +1382,14 @@
i32.gt_u
select
local.tee $3
i32.const 0
call $~lib/rt/tlsf/__alloc
local.tee $0
local.set $0
global.get $~lib/error
if
return
end
local.get $0
i32.const 16
i32.sub
call $~lib/rt/rtrace/onfree
@ -1377,7 +1417,7 @@
i32.add
global.set $~lib/rt/pure/END
)
(func $~lib/rt/pure/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/appendRoot (; 23 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
global.get $~lib/rt/pure/CUR
local.tee $1
@ -1385,6 +1425,10 @@
i32.ge_u
if
call $~lib/rt/pure/growRoots
global.get $~lib/error
if
return
end
global.get $~lib/rt/pure/CUR
local.set $1
end
@ -1396,9 +1440,10 @@
i32.add
global.set $~lib/rt/pure/CUR
)
(func $~lib/rt/pure/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/decrement (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.load offset=4
local.tee $2
@ -1455,6 +1500,10 @@
local.get $0
i32.load offset=8
call $~lib/rt/__typeinfo
global.get $~lib/error
if
return
end
i32.const 16
i32.and
if
@ -1486,7 +1535,7 @@
end
end
)
(func $~lib/rt/pure/__release (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/__release (; 25 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
i32.const 300
i32.gt_u
@ -1497,7 +1546,7 @@
call $~lib/rt/pure/decrement
end
)
(func $start:rc/global-init (; 25 ;) (type $FUNCSIG$v)
(func $start:rc/global-init (; 26 ;) (type $FUNCSIG$v)
(local $0 i32)
i32.const 24
call $~lib/rt/pure/__retain
@ -1528,10 +1577,10 @@
i32.const 0
global.set $rc/global-init/b
)
(func $start (; 26 ;) (type $FUNCSIG$v)
(func $start (; 27 ;) (type $FUNCSIG$v)
call $start:rc/global-init
)
(func $~lib/rt/pure/markGray (; 27 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/markGray (; 28 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -1555,7 +1604,7 @@
call $~lib/rt/__visit_members
end
)
(func $~lib/rt/pure/scanBlack (; 28 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/scanBlack (; 29 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
local.get $0
i32.load offset=4
@ -1568,7 +1617,7 @@
i32.const 4
call $~lib/rt/__visit_members
)
(func $~lib/rt/pure/scan (; 29 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/scan (; 30 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -1602,7 +1651,7 @@
end
end
)
(func $~lib/rt/pure/collectWhite (; 30 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/collectWhite (; 31 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -1635,7 +1684,7 @@
call $~lib/rt/tlsf/freeBlock
end
)
(func $~lib/rt/pure/__visit (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/pure/__visit (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
i32.const 300
i32.lt_u
@ -1670,6 +1719,10 @@
end
local.get $0
call $~lib/rt/pure/decrement
global.get $~lib/error
if
return
end
br $break|0
end
local.get $0
@ -1745,20 +1798,48 @@
unreachable
end
)
(func $~lib/rt/__visit_members (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/__visit_members (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
block $switch$1$default
block $switch$1$case$4
block $switch$1$case$2
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$default
end
return
end
local.get $0
i32.load
local.tee $0
if
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$default
local.get $1
call $~lib/rt/pure/__visit
end
return
end
local.get $0
i32.load
local.tee $2
if
local.get $2
local.get $1
call $~lib/rt/pure/__visit
end
local.get $0
i32.load offset=4
local.tee $2
if
local.get $2
local.get $1
call $~lib/rt/pure/__visit
end
local.get $0
i32.load offset=8
local.tee $0
if
local.get $0
@ -1769,7 +1850,7 @@
end
unreachable
)
(func $null (; 33 ;) (type $FUNCSIG$v)
(func $null (; 34 ;) (type $FUNCSIG$v)
nop
)
)

View File

@ -4,8 +4,8 @@
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$v (func))
(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$viii (func (param i32 i32 i32)))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
@ -17,12 +17,13 @@
(data (i32.const 8) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00")
(data (i32.const 24) "\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 72) "\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 120) "$\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 176) "\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 216) "(\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 272) "\03\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")
(data (i32.const 120) "(\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 176) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00E\00r\00r\00o\00r\00")
(data (i32.const 208) "$\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 264) "\04\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")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/error (mut i32) (i32.const 0))
(global $rc/global-init/a (mut i32) (i32.const 0))
(global $rc/global-init/b (mut i32) (i32.const 0))
(global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0))
@ -30,7 +31,7 @@
(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/rt/__rtti_base i32 (i32.const 272))
(global $~lib/rt/__rtti_base i32 (i32.const 264))
(global $~lib/heap/__heap_base i32 (i32.const 300))
(export "memory" (memory $0))
(start $start)
@ -688,32 +689,7 @@
local.get $1
call $~lib/rt/rtrace/onfree
)
(func $~lib/rt/__typeinfo (; 11 ;) (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 136
i32.const 192
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/addMemory (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/rt/tlsf/addMemory (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -861,7 +837,7 @@
call $~lib/rt/tlsf/insertBlock
i32.const 1
)
(func $~lib/rt/tlsf/initializeRoot (; 13 ;) (type $FUNCSIG$v)
(func $~lib/rt/tlsf/initializeRoot (; 12 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
(local $2 i32)
@ -1006,19 +982,19 @@
local.get $3
global.set $~lib/rt/tlsf/ROOT
)
(func $~lib/rt/tlsf/prepareSize (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/rt/tlsf/prepareSize (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
local.get $0
i32.const 1073741808
i32.ge_u
if
i32.const 232
i32.const 88
i32.const 447
i32.const 29
call $~lib/builtins/abort
unreachable
i32.const 0
i32.const 136
call $~lib/error/Error#constructor
global.set $~lib/error
i32.const 0
return
end
local.get $0
i32.const 15
@ -1035,7 +1011,7 @@
i32.gt_u
select
)
(func $~lib/rt/tlsf/searchBlock (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/searchBlock (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -1218,7 +1194,7 @@
end
local.get $7
)
(func $~lib/rt/tlsf/growMemory (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/tlsf/growMemory (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -1271,7 +1247,7 @@
call $~lib/rt/tlsf/addMemory
drop
)
(func $~lib/rt/tlsf/prepareBlock (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/rt/tlsf/prepareBlock (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -1366,27 +1342,35 @@
i32.store
end
)
(func $~lib/rt/tlsf/allocateBlock (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/allocateBlock (; 17 ;) (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/tlsf/prepareSize
local.set $2
local.get $0
global.get $~lib/error
if
i32.const 0
return
end
local.get $2
call $~lib/rt/tlsf/searchBlock
local.set $3
local.get $0
local.get $3
call $~lib/rt/tlsf/searchBlock
local.set $4
local.get $4
i32.eqz
if
local.get $0
local.get $2
local.get $3
call $~lib/rt/tlsf/growMemory
local.get $0
local.get $2
call $~lib/rt/tlsf/searchBlock
local.set $3
local.get $3
call $~lib/rt/tlsf/searchBlock
local.set $4
local.get $4
i32.eqz
if
i32.const 0
@ -1397,13 +1381,13 @@
unreachable
end
end
local.get $3
local.get $4
i32.load
i32.const 3
i32.const -1
i32.xor
i32.and
local.get $2
local.get $3
i32.ge_u
i32.eqz
if
@ -1414,26 +1398,27 @@
call $~lib/builtins/abort
unreachable
end
local.get $3
local.get $4
i32.const 0
i32.store offset=4
local.get $3
local.get $4
local.get $1
i32.store offset=12
local.get $0
local.get $3
local.get $4
call $~lib/rt/tlsf/removeBlock
local.get $0
local.get $4
local.get $3
local.get $2
call $~lib/rt/tlsf/prepareBlock
local.get $3
local.get $4
call $~lib/rt/rtrace/onalloc
local.get $3
local.get $4
)
(func $~lib/rt/tlsf/__alloc (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/__alloc (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
global.get $~lib/rt/tlsf/ROOT
local.set $2
local.get $2
@ -1447,14 +1432,74 @@
local.get $0
call $~lib/rt/tlsf/allocateBlock
local.set $3
global.get $~lib/error
if
i32.const 0
return
end
local.get $3
local.set $4
local.get $4
local.get $1
i32.store offset=8
local.get $3
local.get $4
i32.const 16
i32.add
)
(func $~lib/util/memory/memcpy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/error/Error#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $1
call $~lib/rt/pure/__retain
drop
local.get $0
i32.eqz
if
i32.const 12
i32.const 3
call $~lib/rt/tlsf/__alloc
call $~lib/rt/pure/__retain
local.set $0
end
local.get $0
i32.const 192
call $~lib/rt/pure/__retain
i32.store
local.get $0
i32.const 24
call $~lib/rt/pure/__retain
i32.store offset=4
local.get $0
local.get $1
i32.store offset=8
local.get $1
call $~lib/rt/pure/__release
local.get $0
)
(func $~lib/rt/__typeinfo (; 20 ;) (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 0
i32.const 224
call $~lib/error/Error#constructor
global.set $~lib/error
i32.const 0
return
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 (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2482,7 +2527,7 @@
i32.store8
end
)
(func $~lib/memory/memory.copy (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/memory/memory.copy (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2707,7 +2752,7 @@
end
end
)
(func $~lib/rt/tlsf/__free (; 22 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/tlsf/__free (; 23 ;) (type $FUNCSIG$vi) (param $0 i32)
global.get $~lib/rt/tlsf/ROOT
i32.eqz
if
@ -2744,7 +2789,7 @@
i32.sub
call $~lib/rt/tlsf/freeBlock
)
(func $~lib/rt/pure/growRoots (; 23 ;) (type $FUNCSIG$v)
(func $~lib/rt/pure/growRoots (; 24 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
(local $2 i32)
@ -2773,6 +2818,12 @@
local.get $4
i32.const 0
call $~lib/rt/tlsf/__alloc
local.set $2
global.get $~lib/error
if
return
end
local.get $2
local.set $5
local.get $5
i32.const 16
@ -2802,7 +2853,7 @@
i32.add
global.set $~lib/rt/pure/END
)
(func $~lib/rt/pure/appendRoot (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/appendRoot (; 25 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
global.get $~lib/rt/pure/CUR
local.set $1
@ -2811,6 +2862,10 @@
i32.ge_u
if
call $~lib/rt/pure/growRoots
global.get $~lib/error
if
return
end
global.get $~lib/rt/pure/CUR
local.set $1
end
@ -2822,9 +2877,10 @@
i32.add
global.set $~lib/rt/pure/CUR
)
(func $~lib/rt/pure/decrement (; 25 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/decrement (; 26 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.load offset=4
local.set $1
@ -2890,6 +2946,12 @@
local.get $0
i32.load offset=8
call $~lib/rt/__typeinfo
local.set $3
global.get $~lib/error
if
return
end
local.get $3
i32.const 16
i32.and
i32.eqz
@ -2910,6 +2972,10 @@
if
local.get $0
call $~lib/rt/pure/appendRoot
global.get $~lib/error
if
return
end
end
else
local.get $0
@ -2926,7 +2992,7 @@
end
end
)
(func $~lib/rt/pure/__release (; 26 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/__release (; 27 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
global.get $~lib/heap/__heap_base
i32.gt_u
@ -2935,9 +3001,13 @@
i32.const 16
i32.sub
call $~lib/rt/pure/decrement
global.get $~lib/error
if
return
end
end
)
(func $start:rc/global-init (; 27 ;) (type $FUNCSIG$v)
(func $start:rc/global-init (; 28 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
call $rc/global-init/getRef
@ -2973,10 +3043,10 @@
local.get $1
global.set $rc/global-init/b
)
(func $start (; 28 ;) (type $FUNCSIG$v)
(func $start (; 29 ;) (type $FUNCSIG$v)
call $start:rc/global-init
)
(func $~lib/rt/pure/markGray (; 29 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/markGray (; 30 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -3003,7 +3073,7 @@
call $~lib/rt/__visit_members
end
)
(func $~lib/rt/pure/scanBlack (; 30 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/scanBlack (; 31 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
local.get $0
i32.load offset=4
@ -3020,7 +3090,7 @@
i32.const 4
call $~lib/rt/__visit_members
)
(func $~lib/rt/pure/scan (; 31 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/scan (; 32 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -3057,7 +3127,7 @@
end
end
)
(func $~lib/rt/pure/collectWhite (; 32 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/collectWhite (; 33 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -3095,7 +3165,7 @@
call $~lib/rt/tlsf/freeBlock
end
)
(func $~lib/rt/pure/__visit (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/pure/__visit (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
@ -3141,6 +3211,10 @@
end
local.get $2
call $~lib/rt/pure/decrement
global.get $~lib/error
if
return
end
br $break|0
end
local.get $2
@ -3229,16 +3303,27 @@
end
end
)
(func $~lib/rt/__visit_members (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/__visit_members (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 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$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$default
end
return
end
local.get $0
i32.load
local.tee $2
if
local.get $2
local.get $1
call $~lib/rt/pure/__visit
end
return
end
@ -3250,10 +3335,26 @@
local.get $1
call $~lib/rt/pure/__visit
end
local.get $0
i32.load offset=4
local.tee $2
if
local.get $2
local.get $1
call $~lib/rt/pure/__visit
end
local.get $0
i32.load offset=8
local.tee $2
if
local.get $2
local.get $1
call $~lib/rt/pure/__visit
end
return
end
unreachable
)
(func $null (; 35 ;) (type $FUNCSIG$v)
(func $null (; 36 ;) (type $FUNCSIG$v)
)
)

View File

@ -3,8 +3,8 @@
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$viii (func (param i32 i32 i32)))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32)))
@ -15,10 +15,11 @@
(data (i32.const 12) "\01\00\00\00\01")
(data (i32.const 24) "\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 72) "\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 120) "$\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 176) "\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 216) "(\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 272) "\04\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")
(data (i32.const 120) "(\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 176) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00E\00r\00r\00o\00r")
(data (i32.const 208) "$\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 264) "\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\00\10\00\00\00\00\00\00\00\10")
(global $~lib/error (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))
@ -555,27 +556,7 @@
local.get $1
call $~lib/rt/rtrace/onfree
)
(func $~lib/rt/__typeinfo (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 272
i32.load
i32.gt_u
if
i32.const 136
i32.const 192
i32.const 22
i32.const 27
call $~lib/builtins/abort
unreachable
end
local.get $0
i32.const 3
i32.shl
i32.const 276
i32.add
i32.load
)
(func $~lib/rt/tlsf/addMemory (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/rt/tlsf/addMemory (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
local.get $2
@ -689,7 +670,7 @@
local.get $1
call $~lib/rt/tlsf/insertBlock
)
(func $~lib/rt/tlsf/initializeRoot (; 12 ;) (type $FUNCSIG$v)
(func $~lib/rt/tlsf/initializeRoot (; 11 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
i32.const 1
@ -772,17 +753,16 @@
i32.const 320
global.set $~lib/rt/tlsf/ROOT
)
(func $~lib/rt/tlsf/prepareSize (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/rt/tlsf/prepareSize (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 1073741808
i32.ge_u
if
i32.const 232
i32.const 88
i32.const 447
i32.const 29
call $~lib/builtins/abort
unreachable
i32.const 136
call $~lib/error/Error#constructor
global.set $~lib/error
i32.const 0
return
end
local.get $0
i32.const 15
@ -796,7 +776,7 @@
i32.gt_u
select
)
(func $~lib/rt/tlsf/searchBlock (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/searchBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
local.get $1
i32.const 256
@ -927,7 +907,7 @@
end
end
)
(func $~lib/rt/tlsf/growMemory (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/tlsf/growMemory (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
memory.size
local.tee $2
@ -964,7 +944,7 @@
i32.shl
call $~lib/rt/tlsf/addMemory
)
(func $~lib/rt/tlsf/prepareBlock (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/rt/tlsf/prepareBlock (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
local.get $1
@ -1040,13 +1020,19 @@
i32.store
end
)
(func $~lib/rt/tlsf/allocateBlock (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/allocateBlock (; 16 ;) (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
local.set $3
global.get $~lib/error
if
i32.const 0
return
end
local.get $0
local.get $3
call $~lib/rt/tlsf/searchBlock
local.tee $2
i32.eqz
@ -1099,7 +1085,7 @@
call $~lib/rt/rtrace/onalloc
local.get $2
)
(func $~lib/rt/tlsf/__alloc (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/__alloc (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
global.get $~lib/rt/tlsf/ROOT
local.tee $2
@ -1111,14 +1097,63 @@
end
local.get $0
call $~lib/rt/tlsf/allocateBlock
local.tee $0
local.set $0
global.get $~lib/error
if
i32.const 0
return
end
local.get $0
local.get $1
i32.store offset=8
local.get $0
i32.const 16
i32.add
)
(func $~lib/memory/memory.copy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/error/Error#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
call $~lib/rt/pure/__retain
drop
i32.const 12
i32.const 3
call $~lib/rt/tlsf/__alloc
call $~lib/rt/pure/__retain
local.tee $1
i32.const 192
call $~lib/rt/pure/__retain
i32.store
local.get $1
i32.const 24
call $~lib/rt/pure/__retain
i32.store offset=4
local.get $1
local.get $0
i32.store offset=8
local.get $0
call $~lib/rt/pure/__release
local.get $1
)
(func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 264
i32.load
i32.gt_u
if
i32.const 224
call $~lib/error/Error#constructor
global.set $~lib/error
i32.const 0
return
end
local.get $0
i32.const 3
i32.shl
i32.const 268
i32.add
i32.load
)
(func $~lib/memory/memory.copy (; 20 ;) (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
@ -1293,7 +1328,7 @@
end
end
)
(func $~lib/rt/tlsf/__free (; 20 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/tlsf/__free (; 21 ;) (type $FUNCSIG$vi) (param $0 i32)
global.get $~lib/rt/tlsf/ROOT
i32.eqz
if
@ -1326,7 +1361,7 @@
i32.sub
call $~lib/rt/tlsf/freeBlock
)
(func $~lib/rt/pure/growRoots (; 21 ;) (type $FUNCSIG$v)
(func $~lib/rt/pure/growRoots (; 22 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
(local $2 i32)
@ -1347,7 +1382,12 @@
local.tee $3
i32.const 0
call $~lib/rt/tlsf/__alloc
local.tee $0
local.set $0
global.get $~lib/error
if
return
end
local.get $0
i32.const 16
i32.sub
call $~lib/rt/rtrace/onfree
@ -1375,7 +1415,7 @@
i32.add
global.set $~lib/rt/pure/END
)
(func $~lib/rt/pure/appendRoot (; 22 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/appendRoot (; 23 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
global.get $~lib/rt/pure/CUR
local.tee $1
@ -1383,6 +1423,10 @@
i32.ge_u
if
call $~lib/rt/pure/growRoots
global.get $~lib/error
if
return
end
global.get $~lib/rt/pure/CUR
local.set $1
end
@ -1394,9 +1438,10 @@
i32.add
global.set $~lib/rt/pure/CUR
)
(func $~lib/rt/pure/decrement (; 23 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/decrement (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.load offset=4
local.tee $2
@ -1453,6 +1498,10 @@
local.get $0
i32.load offset=8
call $~lib/rt/__typeinfo
global.get $~lib/error
if
return
end
i32.const 16
i32.and
if
@ -1484,7 +1533,7 @@
end
end
)
(func $~lib/rt/pure/__release (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/__release (; 25 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
i32.const 308
i32.gt_u
@ -1495,7 +1544,7 @@
call $~lib/rt/pure/decrement
end
)
(func $start (; 25 ;) (type $FUNCSIG$v)
(func $start (; 26 ;) (type $FUNCSIG$v)
i32.const 24
call $~lib/rt/pure/__retain
call $~lib/rt/pure/__release
@ -1503,12 +1552,12 @@
call $~lib/rt/pure/__retain
call $~lib/rt/pure/__release
i32.const 0
i32.const 3
i32.const 4
call $~lib/rt/tlsf/__alloc
call $~lib/rt/pure/__retain
call $~lib/rt/pure/__release
)
(func $~lib/rt/pure/markGray (; 26 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/markGray (; 27 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -1532,7 +1581,7 @@
call $~lib/rt/__visit_members
end
)
(func $~lib/rt/pure/scanBlack (; 27 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/scanBlack (; 28 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
local.get $0
i32.load offset=4
@ -1545,7 +1594,7 @@
i32.const 4
call $~lib/rt/__visit_members
)
(func $~lib/rt/pure/scan (; 28 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/scan (; 29 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -1579,7 +1628,7 @@
end
end
)
(func $~lib/rt/pure/collectWhite (; 29 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/collectWhite (; 30 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -1612,7 +1661,7 @@
call $~lib/rt/tlsf/freeBlock
end
)
(func $~lib/rt/pure/__visit (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/pure/__visit (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
local.get $0
i32.const 308
i32.lt_u
@ -1647,6 +1696,10 @@
end
local.get $0
call $~lib/rt/pure/decrement
global.get $~lib/error
if
return
end
br $break|0
end
local.get $0
@ -1722,20 +1775,48 @@
unreachable
end
)
(func $~lib/rt/__visit_members (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/__visit_members (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
block $switch$1$default
block $switch$1$case$4
block $switch$1$case$2
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$2 $switch$1$default
end
return
end
local.get $0
i32.load
local.tee $0
if
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$default
local.get $1
call $~lib/rt/pure/__visit
end
return
end
local.get $0
i32.load
local.tee $2
if
local.get $2
local.get $1
call $~lib/rt/pure/__visit
end
local.get $0
i32.load offset=4
local.tee $2
if
local.get $2
local.get $1
call $~lib/rt/pure/__visit
end
local.get $0
i32.load offset=8
local.tee $0
if
local.get $0
@ -1746,7 +1827,7 @@
end
unreachable
)
(func $null (; 32 ;) (type $FUNCSIG$v)
(func $null (; 33 ;) (type $FUNCSIG$v)
nop
)
)

View File

@ -3,8 +3,8 @@
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$v (func))
(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$viii (func (param i32 i32 i32)))
(type $FUNCSIG$i (func (result i32)))
@ -17,18 +17,19 @@
(data (i32.const 8) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00")
(data (i32.const 24) "\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 72) "\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 120) "$\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 176) "\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 216) "(\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 272) "\04\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")
(data (i32.const 120) "(\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 176) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00E\00r\00r\00o\00r\00")
(data (i32.const 208) "$\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 264) "\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\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/error (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/rt/__rtti_base i32 (i32.const 272))
(global $~lib/rt/__rtti_base i32 (i32.const 264))
(global $~lib/heap/__heap_base i32 (i32.const 308))
(export "memory" (memory $0))
(start $start)
@ -682,32 +683,7 @@
local.get $1
call $~lib/rt/rtrace/onfree
)
(func $~lib/rt/__typeinfo (; 10 ;) (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 136
i32.const 192
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/addMemory (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(func $~lib/rt/tlsf/addMemory (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -855,7 +831,7 @@
call $~lib/rt/tlsf/insertBlock
i32.const 1
)
(func $~lib/rt/tlsf/initializeRoot (; 12 ;) (type $FUNCSIG$v)
(func $~lib/rt/tlsf/initializeRoot (; 11 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
(local $2 i32)
@ -1000,19 +976,19 @@
local.get $3
global.set $~lib/rt/tlsf/ROOT
)
(func $~lib/rt/tlsf/prepareSize (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/rt/tlsf/prepareSize (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
local.get $0
i32.const 1073741808
i32.ge_u
if
i32.const 232
i32.const 88
i32.const 447
i32.const 29
call $~lib/builtins/abort
unreachable
i32.const 0
i32.const 136
call $~lib/error/Error#constructor
global.set $~lib/error
i32.const 0
return
end
local.get $0
i32.const 15
@ -1029,7 +1005,7 @@
i32.gt_u
select
)
(func $~lib/rt/tlsf/searchBlock (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/searchBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -1212,7 +1188,7 @@
end
local.get $7
)
(func $~lib/rt/tlsf/growMemory (; 15 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/tlsf/growMemory (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -1265,7 +1241,7 @@
call $~lib/rt/tlsf/addMemory
drop
)
(func $~lib/rt/tlsf/prepareBlock (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/rt/tlsf/prepareBlock (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -1360,27 +1336,35 @@
i32.store
end
)
(func $~lib/rt/tlsf/allocateBlock (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/allocateBlock (; 16 ;) (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/tlsf/prepareSize
local.set $2
local.get $0
global.get $~lib/error
if
i32.const 0
return
end
local.get $2
call $~lib/rt/tlsf/searchBlock
local.set $3
local.get $0
local.get $3
call $~lib/rt/tlsf/searchBlock
local.set $4
local.get $4
i32.eqz
if
local.get $0
local.get $2
local.get $3
call $~lib/rt/tlsf/growMemory
local.get $0
local.get $2
call $~lib/rt/tlsf/searchBlock
local.set $3
local.get $3
call $~lib/rt/tlsf/searchBlock
local.set $4
local.get $4
i32.eqz
if
i32.const 0
@ -1391,13 +1375,13 @@
unreachable
end
end
local.get $3
local.get $4
i32.load
i32.const 3
i32.const -1
i32.xor
i32.and
local.get $2
local.get $3
i32.ge_u
i32.eqz
if
@ -1408,26 +1392,27 @@
call $~lib/builtins/abort
unreachable
end
local.get $3
local.get $4
i32.const 0
i32.store offset=4
local.get $3
local.get $4
local.get $1
i32.store offset=12
local.get $0
local.get $3
local.get $4
call $~lib/rt/tlsf/removeBlock
local.get $0
local.get $4
local.get $3
local.get $2
call $~lib/rt/tlsf/prepareBlock
local.get $3
local.get $4
call $~lib/rt/rtrace/onalloc
local.get $3
local.get $4
)
(func $~lib/rt/tlsf/__alloc (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/tlsf/__alloc (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
global.get $~lib/rt/tlsf/ROOT
local.set $2
local.get $2
@ -1441,14 +1426,74 @@
local.get $0
call $~lib/rt/tlsf/allocateBlock
local.set $3
global.get $~lib/error
if
i32.const 0
return
end
local.get $3
local.set $4
local.get $4
local.get $1
i32.store offset=8
local.get $3
local.get $4
i32.const 16
i32.add
)
(func $~lib/util/memory/memcpy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/error/Error#constructor (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $1
call $~lib/rt/pure/__retain
drop
local.get $0
i32.eqz
if
i32.const 12
i32.const 3
call $~lib/rt/tlsf/__alloc
call $~lib/rt/pure/__retain
local.set $0
end
local.get $0
i32.const 192
call $~lib/rt/pure/__retain
i32.store
local.get $0
i32.const 24
call $~lib/rt/pure/__retain
i32.store offset=4
local.get $0
local.get $1
i32.store offset=8
local.get $1
call $~lib/rt/pure/__release
local.get $0
)
(func $~lib/rt/__typeinfo (; 19 ;) (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 0
i32.const 224
call $~lib/error/Error#constructor
global.set $~lib/error
i32.const 0
return
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 (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@ -2476,7 +2521,7 @@
i32.store8
end
)
(func $~lib/memory/memory.copy (; 20 ;) (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)
@ -2701,7 +2746,7 @@
end
end
)
(func $~lib/rt/tlsf/__free (; 21 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/tlsf/__free (; 22 ;) (type $FUNCSIG$vi) (param $0 i32)
global.get $~lib/rt/tlsf/ROOT
i32.eqz
if
@ -2738,7 +2783,7 @@
i32.sub
call $~lib/rt/tlsf/freeBlock
)
(func $~lib/rt/pure/growRoots (; 22 ;) (type $FUNCSIG$v)
(func $~lib/rt/pure/growRoots (; 23 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
(local $2 i32)
@ -2767,6 +2812,12 @@
local.get $4
i32.const 0
call $~lib/rt/tlsf/__alloc
local.set $2
global.get $~lib/error
if
return
end
local.get $2
local.set $5
local.get $5
i32.const 16
@ -2796,7 +2847,7 @@
i32.add
global.set $~lib/rt/pure/END
)
(func $~lib/rt/pure/appendRoot (; 23 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/appendRoot (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
global.get $~lib/rt/pure/CUR
local.set $1
@ -2805,6 +2856,10 @@
i32.ge_u
if
call $~lib/rt/pure/growRoots
global.get $~lib/error
if
return
end
global.get $~lib/rt/pure/CUR
local.set $1
end
@ -2816,9 +2871,10 @@
i32.add
global.set $~lib/rt/pure/CUR
)
(func $~lib/rt/pure/decrement (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/decrement (; 25 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.load offset=4
local.set $1
@ -2884,6 +2940,12 @@
local.get $0
i32.load offset=8
call $~lib/rt/__typeinfo
local.set $3
global.get $~lib/error
if
return
end
local.get $3
i32.const 16
i32.and
i32.eqz
@ -2904,6 +2966,10 @@
if
local.get $0
call $~lib/rt/pure/appendRoot
global.get $~lib/error
if
return
end
end
else
local.get $0
@ -2920,7 +2986,7 @@
end
end
)
(func $~lib/rt/pure/__release (; 25 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/__release (; 26 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
global.get $~lib/heap/__heap_base
i32.gt_u
@ -2929,25 +2995,29 @@
i32.const 16
i32.sub
call $~lib/rt/pure/decrement
global.get $~lib/error
if
return
end
end
)
(func $rc/local-init/getRef (; 26 ;) (type $FUNCSIG$i) (result i32)
(func $rc/local-init/getRef (; 27 ;) (type $FUNCSIG$i) (result i32)
i32.const 24
call $~lib/rt/pure/__retain
)
(func $rc/local-init/Ref#constructor (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $rc/local-init/Ref#constructor (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 0
i32.const 3
i32.const 4
call $~lib/rt/tlsf/__alloc
call $~lib/rt/pure/__retain
local.set $0
end
local.get $0
)
(func $start:rc/local-init (; 28 ;) (type $FUNCSIG$v)
(func $start:rc/local-init (; 29 ;) (type $FUNCSIG$v)
(local $0 i32)
i32.const 24
call $~lib/rt/pure/__retain
@ -2964,10 +3034,10 @@
local.get $0
call $~lib/rt/pure/__release
)
(func $start (; 29 ;) (type $FUNCSIG$v)
(func $start (; 30 ;) (type $FUNCSIG$v)
call $start:rc/local-init
)
(func $~lib/rt/pure/markGray (; 30 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/markGray (; 31 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -2994,7 +3064,7 @@
call $~lib/rt/__visit_members
end
)
(func $~lib/rt/pure/scanBlack (; 31 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/scanBlack (; 32 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
local.get $0
i32.load offset=4
@ -3011,7 +3081,7 @@
i32.const 4
call $~lib/rt/__visit_members
)
(func $~lib/rt/pure/scan (; 32 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/scan (; 33 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -3048,7 +3118,7 @@
end
end
)
(func $~lib/rt/pure/collectWhite (; 33 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/rt/pure/collectWhite (; 34 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
i32.load offset=4
@ -3086,7 +3156,7 @@
call $~lib/rt/tlsf/freeBlock
end
)
(func $~lib/rt/pure/__visit (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/pure/__visit (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
@ -3132,6 +3202,10 @@
end
local.get $2
call $~lib/rt/pure/decrement
global.get $~lib/error
if
return
end
br $break|0
end
local.get $2
@ -3220,16 +3294,27 @@
end
end
)
(func $~lib/rt/__visit_members (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(func $~lib/rt/__visit_members (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 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$2 $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$2 $switch$1$default
end
return
end
local.get $0
i32.load
local.tee $2
if
local.get $2
local.get $1
call $~lib/rt/pure/__visit
end
return
end
@ -3241,10 +3326,26 @@
local.get $1
call $~lib/rt/pure/__visit
end
local.get $0
i32.load offset=4
local.tee $2
if
local.get $2
local.get $1
call $~lib/rt/pure/__visit
end
local.get $0
i32.load offset=8
local.tee $2
if
local.get $2
local.get $1
call $~lib/rt/pure/__visit
end
return
end
unreachable
)
(func $null (; 36 ;) (type $FUNCSIG$v)
(func $null (; 37 ;) (type $FUNCSIG$v)
)
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff