use gc interface directly, document

This commit is contained in:
dcode
2019-03-26 23:35:08 +01:00
parent 7c0dc66849
commit 3146f8f9e0
95 changed files with 17360 additions and 13504 deletions

View File

@ -2,23 +2,30 @@
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$i (func (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\01\00\00\00\03\00\00\00\00\01\02")
(data (i32.const 24) "\02\00\00\00\10\00\00\00\10\00\00\00\10\00\00\00\03\00\00\00\03")
(data (i32.const 48) "\03\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s")
(data (i32.const 96) "\03\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
(data (i32.const 136) "\01\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02")
(data (i32.const 160) "\04\00\00\00\10\00\00\00\90\00\00\00\90\00\00\00\0c\00\00\00\03")
(data (i32.const 184) "\01")
(data (i32.const 192) "\04\00\00\00\10\00\00\00\c0\00\00\00\c0")
(data (i32.const 216) "\03\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(data (i32.const 8) "\01\00\00\00\03")
(data (i32.const 25) "\01\02")
(data (i32.const 32) "\02\00\00\00\10")
(data (i32.const 48) "\18\00\00\00\18\00\00\00\03\00\00\00\03")
(data (i32.const 64) "\03\00\00\00(")
(data (i32.const 80) "s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s")
(data (i32.const 120) "\03\00\00\00\1a")
(data (i32.const 136) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
(data (i32.const 168) "\01\00\00\00\0c")
(data (i32.const 188) "\01\00\00\00\02")
(data (i32.const 200) "\04\00\00\00\10")
(data (i32.const 216) "\b8\00\00\00\b8\00\00\00\0c\00\00\00\03")
(data (i32.const 232) "\01")
(data (i32.const 248) "\04\00\00\00\10")
(data (i32.const 264) "\f8\00\00\00\f8")
(data (i32.const 280) "\03\00\00\00\1e")
(data (i32.const 296) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 200))
(global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 264))
(global $std/array-literal/i (mut i32) (i32.const 0))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
@ -26,8 +33,10 @@
(global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0))
(global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0))
(global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0))
(global $~lib/capabilities i32 (i32.const 2))
(export "memory" (memory $0))
(export "table" (table $0))
(export ".capabilities" (global $~lib/capabilities))
(start $start)
(func $~lib/array/Array<i8>#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $1
@ -36,15 +45,15 @@
i32.ge_u
if
i32.const 0
i32.const 104
i32.const 100
i32.const 136
i32.const 98
i32.const 61
call $~lib/env/abort
unreachable
end
local.get $1
local.get $0
i32.load offset=4
local.get $1
i32.add
i32.load8_s
)
@ -57,8 +66,8 @@
i32.ge_u
if
i32.const 0
i32.const 104
i32.const 100
i32.const 136
i32.const 98
i32.const 61
call $~lib/env/abort
unreachable
@ -133,12 +142,12 @@
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $~lib/runtime/doAllocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
i32.const 1
i32.const 32
local.get $0
i32.const 7
i32.const 15
i32.add
i32.clz
i32.sub
@ -151,183 +160,193 @@
local.get $0
i32.store offset=4
local.get $1
i32.const 8
i32.const 0
i32.store offset=8
local.get $1
i32.const 0
i32.store offset=12
local.get $1
i32.const 16
i32.add
)
(func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $~lib/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
local.get $0
i32.const 256
i32.const 328
i32.le_u
if
i32.const 0
i32.const 224
i32.const 313
i32.const 2
i32.const 296
i32.const 161
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $0
i32.const 8
i32.const 16
i32.sub
local.tee $2
i32.load
i32.const -1520547049
i32.ne
if
i32.const 0
i32.const 224
i32.const 314
i32.const 2
i32.const 296
i32.const 163
i32.const 4
call $~lib/env/abort
unreachable
end
)
(func $~lib/runtime/doRegister (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
call $~lib/runtime/assertUnregistered
local.get $0
i32.const 8
i32.sub
local.get $2
local.get $1
i32.store
local.get $0
)
(func $~lib/runtime/doMakeArray (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/runtime/makeArray (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
i32.const 16
call $~lib/runtime/doAllocate
call $~lib/runtime/allocate
local.get $0
call $~lib/runtime/doRegister
local.tee $0
call $~lib/runtime/register
local.set $2
i32.const 3
local.get $1
i32.shl
local.tee $1
call $~lib/runtime/doAllocate
call $~lib/runtime/allocate
i32.const 1
call $~lib/runtime/doRegister
local.tee $2
i32.store
local.get $0
call $~lib/runtime/register
local.tee $3
local.tee $0
local.get $2
i32.load
i32.ne
drop
local.get $2
i32.store offset=4
local.get $0
i32.store
local.get $2
local.get $3
i32.store offset=4
local.get $2
local.get $1
i32.store offset=8
local.get $0
local.get $2
i32.const 3
i32.store offset=12
local.get $0
local.get $2
)
(func $std/array-literal/Ref#constructor (; 8 ;) (type $FUNCSIG$i) (result i32)
(func $std/array-literal/Ref#constructor (; 7 ;) (type $FUNCSIG$i) (result i32)
i32.const 0
call $~lib/runtime/doAllocate
call $~lib/runtime/allocate
i32.const 5
call $~lib/runtime/doRegister
call $~lib/runtime/register
)
(func $std/array-literal/RefWithCtor#constructor (; 9 ;) (type $FUNCSIG$i) (result i32)
(func $std/array-literal/RefWithCtor#constructor (; 8 ;) (type $FUNCSIG$i) (result i32)
i32.const 0
call $~lib/runtime/doAllocate
call $~lib/runtime/allocate
i32.const 7
call $~lib/runtime/doRegister
call $~lib/runtime/register
)
(func $start:std/array-literal (; 10 ;) (type $FUNCSIG$v)
(func $start:std/array-literal (; 9 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
(local $2 i32)
i32.const 44
i32.const 60
i32.load
i32.const 3
i32.ne
if
i32.const 0
i32.const 56
i32.const 4
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 32
i32.const 0
call $~lib/array/Array<i8>#__get
if
i32.const 0
i32.const 56
i32.const 80
i32.const 5
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 32
i32.const 1
i32.const 48
i32.const 0
call $~lib/array/Array<i8>#__get
i32.const 1
i32.ne
if
i32.const 0
i32.const 56
i32.const 80
i32.const 6
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 32
i32.const 48
i32.const 1
call $~lib/array/Array<i8>#__get
i32.const 1
i32.ne
if
i32.const 0
i32.const 80
i32.const 7
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 48
i32.const 2
call $~lib/array/Array<i8>#__get
i32.const 2
i32.ne
if
i32.const 0
i32.const 56
i32.const 7
i32.const 80
i32.const 8
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 180
i32.const 228
i32.load
i32.const 3
i32.ne
if
i32.const 0
i32.const 56
i32.const 10
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 168
i32.const 0
call $~lib/array/Array<i32>#__get
if
i32.const 0
i32.const 56
i32.const 80
i32.const 11
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 168
i32.const 1
i32.const 216
i32.const 0
call $~lib/array/Array<i32>#__get
i32.const 1
i32.ne
if
i32.const 0
i32.const 56
i32.const 80
i32.const 12
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 168
i32.const 216
i32.const 1
call $~lib/array/Array<i32>#__get
i32.const 1
i32.ne
if
i32.const 0
i32.const 80
i32.const 13
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 216
i32.const 2
call $~lib/array/Array<i32>#__get
i32.const 2
i32.ne
if
i32.const 0
i32.const 56
i32.const 13
i32.const 80
i32.const 14
i32.const 0
call $~lib/env/abort
unreachable
@ -336,41 +355,42 @@
i32.load offset=12
if
i32.const 0
i32.const 56
i32.const 16
i32.const 80
i32.const 17
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 256
i32.const 328
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
i32.const 2
i32.const 0
call $~lib/runtime/doMakeArray
local.tee $0
i32.load offset=4
call $~lib/runtime/makeArray
local.tee $1
global.get $std/array-literal/i
i32.load offset=4
local.tee $2
global.get $std/array-literal/i
local.tee $0
i32.store8
local.get $2
i32.const 1
i32.add
global.set $std/array-literal/i
local.get $1
global.get $std/array-literal/i
local.tee $2
i32.store8 offset=1
local.get $2
i32.const 1
i32.add
global.set $std/array-literal/i
local.get $1
global.get $std/array-literal/i
i32.store8 offset=2
local.get $0
i32.const 1
i32.add
local.tee $0
global.set $std/array-literal/i
local.get $2
local.get $0
i32.store8 offset=1
global.get $std/array-literal/i
i32.const 1
i32.add
local.tee $0
global.set $std/array-literal/i
local.get $2
local.get $0
i32.store8 offset=2
local.get $1
global.set $std/array-literal/dynamicArrayI8
global.get $std/array-literal/dynamicArrayI8
i32.load offset=12
@ -378,8 +398,8 @@
i32.ne
if
i32.const 0
i32.const 56
i32.const 21
i32.const 80
i32.const 22
i32.const 0
call $~lib/env/abort
unreachable
@ -389,34 +409,34 @@
call $~lib/array/Array<i8>#__get
if
i32.const 0
i32.const 56
i32.const 22
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/array-literal/dynamicArrayI8
i32.const 1
call $~lib/array/Array<i8>#__get
i32.const 1
i32.ne
if
i32.const 0
i32.const 56
i32.const 80
i32.const 23
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/array-literal/dynamicArrayI8
i32.const 1
call $~lib/array/Array<i8>#__get
i32.const 1
i32.ne
if
i32.const 0
i32.const 80
i32.const 24
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/array-literal/dynamicArrayI8
i32.const 2
call $~lib/array/Array<i8>#__get
i32.const 2
i32.ne
if
i32.const 0
i32.const 56
i32.const 24
i32.const 80
i32.const 25
i32.const 0
call $~lib/env/abort
unreachable
@ -425,29 +445,30 @@
global.set $std/array-literal/i
i32.const 4
i32.const 2
call $~lib/runtime/doMakeArray
local.tee $1
call $~lib/runtime/makeArray
local.tee $2
i32.load offset=4
local.tee $1
global.get $std/array-literal/i
local.tee $0
global.get $std/array-literal/i
local.tee $2
i32.store
local.get $2
local.get $0
i32.const 1
i32.add
local.tee $0
global.set $std/array-literal/i
local.get $0
global.get $std/array-literal/i
local.tee $2
i32.store offset=4
local.get $2
i32.const 1
i32.add
global.set $std/array-literal/i
local.get $0
global.get $std/array-literal/i
i32.store offset=8
local.get $1
local.get $0
i32.store offset=4
global.get $std/array-literal/i
i32.const 1
i32.add
local.tee $0
global.set $std/array-literal/i
local.get $1
local.get $0
i32.store offset=8
local.get $2
global.set $std/array-literal/dynamicArrayI32
global.get $std/array-literal/dynamicArrayI32
i32.load offset=12
@ -455,8 +476,8 @@
i32.ne
if
i32.const 0
i32.const 56
i32.const 29
i32.const 80
i32.const 30
i32.const 0
call $~lib/env/abort
unreachable
@ -466,53 +487,53 @@
call $~lib/array/Array<i32>#__get
if
i32.const 0
i32.const 56
i32.const 30
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/array-literal/dynamicArrayI32
i32.const 1
call $~lib/array/Array<i32>#__get
i32.const 1
i32.ne
if
i32.const 0
i32.const 56
i32.const 80
i32.const 31
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/array-literal/dynamicArrayI32
i32.const 1
call $~lib/array/Array<i32>#__get
i32.const 1
i32.ne
if
i32.const 0
i32.const 80
i32.const 32
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/array-literal/dynamicArrayI32
i32.const 2
call $~lib/array/Array<i32>#__get
i32.const 2
i32.ne
if
i32.const 0
i32.const 56
i32.const 32
i32.const 80
i32.const 33
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 6
i32.const 2
call $~lib/runtime/doMakeArray
local.tee $0
i32.load offset=4
call $~lib/runtime/makeArray
local.tee $1
i32.load offset=4
local.tee $2
call $std/array-literal/Ref#constructor
i32.store
local.get $1
local.get $2
call $std/array-literal/Ref#constructor
i32.store offset=4
local.get $1
local.get $2
call $std/array-literal/Ref#constructor
i32.store offset=8
local.get $0
local.get $1
global.set $std/array-literal/dynamicArrayRef
global.get $std/array-literal/dynamicArrayRef
i32.load offset=12
@ -520,27 +541,27 @@
i32.ne
if
i32.const 0
i32.const 56
i32.const 36
i32.const 80
i32.const 37
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 8
i32.const 2
call $~lib/runtime/doMakeArray
local.tee $1
call $~lib/runtime/makeArray
local.tee $2
i32.load offset=4
local.tee $0
local.tee $1
call $std/array-literal/RefWithCtor#constructor
i32.store
local.get $0
local.get $1
call $std/array-literal/RefWithCtor#constructor
i32.store offset=4
local.get $0
local.get $1
call $std/array-literal/RefWithCtor#constructor
i32.store offset=8
local.get $1
local.get $2
global.set $std/array-literal/dynamicArrayRefWithCtor
global.get $std/array-literal/dynamicArrayRefWithCtor
i32.load offset=12
@ -548,17 +569,17 @@
i32.ne
if
i32.const 0
i32.const 56
i32.const 40
i32.const 80
i32.const 41
i32.const 0
call $~lib/env/abort
unreachable
end
)
(func $start (; 11 ;) (type $FUNCSIG$v)
(func $start (; 10 ;) (type $FUNCSIG$v)
call $start:std/array-literal
)
(func $null (; 12 ;) (type $FUNCSIG$v)
(func $null (; 11 ;) (type $FUNCSIG$v)
nop
)
)