assemblyscript/tests/compiler/gc.optimized.wat

388 lines
8.3 KiB
Plaintext
Raw Normal View History

2019-03-28 11:07:47 +01:00
(module
(type $FUNCSIG$v (func))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
2019-04-02 16:18:44 +02:00
(type $FUNCSIG$vi (func (param i32)))
2019-03-28 11:07:47 +01:00
(type $FUNCSIG$viiddddd (func (param i32 i32 f64 f64 f64 f64 f64)))
2019-04-02 10:12:57 +02:00
(type $FUNCSIG$vii (func (param i32 i32)))
2019-03-28 11:07:47 +01:00
(type $FUNCSIG$i (func (result i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(import "env" "trace" (func $~lib/env/trace (param i32 i32 f64 f64 f64 f64 f64)))
(memory $0 1)
2019-04-05 01:59:01 +02:00
(data (i32.const 8) "\02\00\00\00(")
(data (i32.const 24) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(data (i32.const 64) "\02\00\00\00\16")
(data (i32.const 80) "g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r")
(data (i32.const 104) "\02\00\00\00\0e")
(data (i32.const 120) "g\00c\00.\00l\00i\00n\00k")
(data (i32.const 136) "\02\00\00\00\n")
(data (i32.const 152) "g\00c\00.\00t\00s")
(data (i32.const 168) "\02\00\00\00\12")
(data (i32.const 184) "g\00c\00.\00u\00n\00l\00i\00n\00k")
(data (i32.const 208) "\02\00\00\00\14")
(data (i32.const 224) "g\00c\00.\00c\00o\00l\00l\00e\00c\00t")
2019-04-02 16:18:44 +02:00
(table $0 1 funcref)
(elem (i32.const 0) $null)
2019-03-28 11:07:47 +01:00
(global $gc/_dummy/collect_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_count (mut i32) (i32.const 0))
(global $gc/_dummy/register_ref (mut i32) (i32.const 0))
(global $gc/_dummy/link_count (mut i32) (i32.const 0))
(global $gc/_dummy/link_ref (mut i32) (i32.const 0))
(global $gc/_dummy/link_parentRef (mut i32) (i32.const 0))
(global $gc/_dummy/unlink_count (mut i32) (i32.const 0))
(global $gc/_dummy/unlink_ref (mut i32) (i32.const 0))
(global $gc/_dummy/unlink_parentRef (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))
2019-04-04 02:25:22 +02:00
(global $~lib/runtime/ROOT (mut i32) (i32.const 0))
2019-03-28 11:07:47 +01:00
(global $~lib/started (mut i32) (i32.const 0))
(global $~lib/capabilities i32 (i32.const 2))
(export "memory" (memory $0))
(export "table" (table $0))
(export "main" (func $gc/main))
2019-04-05 01:59:01 +02:00
(export "$.capabilities" (global $~lib/capabilities))
2019-04-03 21:47:38 +02:00
(func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
2019-03-28 11:07:47 +01:00
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.tee $1
local.get $0
i32.const 1
local.get $0
i32.const 1
i32.gt_u
select
i32.add
i32.const 7
i32.add
i32.const -8
i32.and
local.tee $0
current_memory
local.tee $2
i32.const 16
i32.shl
i32.gt_u
if
local.get $2
local.get $0
local.get $1
i32.sub
i32.const 65535
i32.add
i32.const -65536
i32.and
i32.const 16
i32.shr_u
local.tee $3
local.get $2
local.get $3
i32.gt_s
select
grow_memory
i32.const 0
i32.lt_s
if
local.get $3
grow_memory
i32.const 0
i32.lt_s
if
unreachable
end
end
end
local.get $0
global.set $~lib/allocator/arena/offset
local.get $1
)
2019-04-05 01:59:01 +02:00
(func $~lib/util/runtime/allocate (; 3 ;) (type $FUNCSIG$i) (result i32)
2019-04-04 02:25:22 +02:00
(local $0 i32)
i32.const 16
2019-03-28 11:07:47 +01:00
call $~lib/allocator/arena/__mem_allocate
2019-04-04 02:25:22 +02:00
local.tee $0
2019-03-28 11:07:47 +01:00
i32.const -1520547049
i32.store
local.get $0
2019-04-04 02:25:22 +02:00
i32.const 0
2019-03-28 11:07:47 +01:00
i32.store offset=4
2019-04-04 02:25:22 +02:00
local.get $0
2019-03-28 11:07:47 +01:00
i32.const 0
i32.store offset=8
2019-04-04 02:25:22 +02:00
local.get $0
2019-03-28 11:07:47 +01:00
i32.const 0
i32.store offset=12
2019-04-04 02:25:22 +02:00
local.get $0
2019-03-28 11:07:47 +01:00
i32.const 16
i32.add
)
2019-04-03 21:47:38 +02:00
(func $gc/_dummy/__ref_register (; 4 ;) (type $FUNCSIG$vi) (param $0 i32)
2019-04-05 01:59:01 +02:00
i32.const 80
2019-03-28 11:07:47 +01:00
i32.const 1
local.get $0
f64.convert_i32_u
f64.const 0
f64.const 0
f64.const 0
f64.const 0
call $~lib/env/trace
global.get $gc/_dummy/register_count
i32.const 1
i32.add
global.set $gc/_dummy/register_count
local.get $0
global.set $gc/_dummy/register_ref
)
2019-04-05 01:59:01 +02:00
(func $~lib/util/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
2019-03-28 11:07:47 +01:00
(local $2 i32)
local.get $0
2019-04-05 01:59:01 +02:00
i32.const 244
2019-03-28 11:07:47 +01:00
i32.le_u
if
i32.const 0
i32.const 24
2019-04-05 01:59:01 +02:00
i32.const 128
i32.const 4
2019-03-28 11:07:47 +01:00
call $~lib/env/abort
unreachable
end
local.get $0
i32.const 16
i32.sub
local.tee $2
i32.load
i32.const -1520547049
i32.ne
if
i32.const 0
i32.const 24
2019-04-05 01:59:01 +02:00
i32.const 130
i32.const 4
2019-03-28 11:07:47 +01:00
call $~lib/env/abort
unreachable
end
local.get $2
local.get $1
i32.store
local.get $0
call $gc/_dummy/__ref_register
local.get $0
)
2019-04-04 02:25:22 +02:00
(func $gc/_dummy/__ref_link (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
2019-04-05 01:59:01 +02:00
i32.const 120
2019-03-28 11:07:47 +01:00
i32.const 2
local.get $0
f64.convert_i32_u
local.get $1
f64.convert_i32_u
f64.const 0
f64.const 0
f64.const 0
call $~lib/env/trace
global.get $gc/_dummy/link_count
i32.const 1
i32.add
global.set $gc/_dummy/link_count
local.get $0
global.set $gc/_dummy/link_ref
local.get $0
global.set $gc/_dummy/link_parentRef
)
2019-04-04 02:25:22 +02:00
(func $gc/_dummy/__ref_unlink (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
2019-04-05 01:59:01 +02:00
i32.const 184
2019-03-28 11:07:47 +01:00
i32.const 2
local.get $0
f64.convert_i32_u
local.get $1
f64.convert_i32_u
f64.const 0
f64.const 0
f64.const 0
call $~lib/env/trace
global.get $gc/_dummy/unlink_count
i32.const 1
i32.add
global.set $gc/_dummy/unlink_count
local.get $0
global.set $gc/_dummy/unlink_ref
local.get $1
global.set $gc/_dummy/unlink_parentRef
)
2019-04-04 02:25:22 +02:00
(func $gc/main (; 8 ;) (type $FUNCSIG$v)
(local $0 i32)
2019-03-28 11:07:47 +01:00
(local $1 i32)
(local $2 i32)
(local $3 i32)
2019-04-04 02:25:22 +02:00
global.get $~lib/started
i32.eqz
if
2019-04-05 01:59:01 +02:00
i32.const 248
2019-04-04 02:25:22 +02:00
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
2019-04-05 01:59:01 +02:00
call $~lib/util/runtime/allocate
2019-04-04 02:25:22 +02:00
i32.const 3
2019-04-05 01:59:01 +02:00
call $~lib/util/runtime/register
2019-04-04 02:25:22 +02:00
global.set $~lib/runtime/ROOT
i32.const 1
global.set $~lib/started
end
2019-04-05 01:59:01 +02:00
call $~lib/util/runtime/allocate
2019-04-04 02:25:22 +02:00
i32.const 1
2019-04-05 01:59:01 +02:00
call $~lib/util/runtime/register
2019-04-04 02:25:22 +02:00
local.set $2
global.get $gc/_dummy/link_count
local.set $0
global.get $gc/_dummy/unlink_count
2019-03-28 11:07:47 +01:00
local.set $1
2019-04-04 02:25:22 +02:00
global.get $gc/_dummy/collect_count
local.set $3
local.get $2
global.get $~lib/runtime/ROOT
call $gc/_dummy/__ref_link
global.get $gc/_dummy/link_count
local.get $0
i32.const 1
i32.add
2019-03-28 11:07:47 +01:00
i32.ne
if
2019-04-04 02:25:22 +02:00
i32.const 0
2019-04-05 01:59:01 +02:00
i32.const 152
2019-04-04 02:25:22 +02:00
i32.const 14
i32.const 2
call $~lib/env/abort
unreachable
2019-03-28 11:07:47 +01:00
end
2019-04-04 02:25:22 +02:00
global.get $gc/_dummy/unlink_count
2019-03-28 11:07:47 +01:00
local.get $1
i32.ne
if
2019-04-04 02:25:22 +02:00
i32.const 0
2019-04-05 01:59:01 +02:00
i32.const 152
2019-04-04 02:25:22 +02:00
i32.const 15
i32.const 2
call $~lib/env/abort
unreachable
2019-03-28 11:07:47 +01:00
end
2019-04-04 02:25:22 +02:00
global.get $gc/_dummy/collect_count
local.get $3
i32.ne
if
i32.const 0
2019-04-05 01:59:01 +02:00
i32.const 152
2019-04-04 02:25:22 +02:00
i32.const 16
i32.const 2
call $~lib/env/abort
unreachable
end
global.get $gc/_dummy/link_count
local.set $0
global.get $gc/_dummy/unlink_count
local.set $1
global.get $gc/_dummy/collect_count
local.set $3
local.get $2
global.get $~lib/runtime/ROOT
call $gc/_dummy/__ref_unlink
global.get $gc/_dummy/link_count
2019-03-28 11:07:47 +01:00
local.get $0
2019-04-04 02:25:22 +02:00
i32.ne
if
i32.const 0
2019-04-05 01:59:01 +02:00
i32.const 152
2019-04-04 02:25:22 +02:00
i32.const 23
i32.const 2
call $~lib/env/abort
unreachable
end
global.get $gc/_dummy/unlink_count
2019-03-28 11:07:47 +01:00
local.get $1
i32.const 1
i32.add
i32.ne
if
2019-04-04 02:25:22 +02:00
i32.const 0
2019-04-05 01:59:01 +02:00
i32.const 152
2019-04-04 02:25:22 +02:00
i32.const 24
i32.const 2
call $~lib/env/abort
unreachable
2019-03-28 11:07:47 +01:00
end
2019-04-04 02:25:22 +02:00
global.get $gc/_dummy/collect_count
local.get $3
2019-03-28 11:07:47 +01:00
i32.ne
if
2019-04-04 02:25:22 +02:00
i32.const 0
2019-04-05 01:59:01 +02:00
i32.const 152
2019-04-04 02:25:22 +02:00
i32.const 25
2019-03-28 11:07:47 +01:00
i32.const 2
2019-04-04 02:25:22 +02:00
call $~lib/env/abort
unreachable
2019-03-28 11:07:47 +01:00
end
2019-04-04 02:25:22 +02:00
global.get $gc/_dummy/link_count
local.set $2
global.get $gc/_dummy/unlink_count
local.set $0
global.get $gc/_dummy/collect_count
local.set $1
2019-04-05 01:59:01 +02:00
i32.const 224
2019-03-28 11:07:47 +01:00
i32.const 0
f64.const 0
f64.const 0
f64.const 0
f64.const 0
f64.const 0
call $~lib/env/trace
global.get $gc/_dummy/collect_count
i32.const 1
i32.add
global.set $gc/_dummy/collect_count
global.get $gc/_dummy/link_count
local.get $2
i32.ne
if
i32.const 0
2019-04-05 01:59:01 +02:00
i32.const 152
2019-04-04 02:25:22 +02:00
i32.const 32
2019-03-28 11:07:47 +01:00
i32.const 2
call $~lib/env/abort
unreachable
end
global.get $gc/_dummy/unlink_count
local.get $0
i32.ne
if
i32.const 0
2019-04-05 01:59:01 +02:00
i32.const 152
2019-04-04 02:25:22 +02:00
i32.const 33
2019-03-28 11:07:47 +01:00
i32.const 2
call $~lib/env/abort
unreachable
end
global.get $gc/_dummy/collect_count
local.get $1
2019-04-04 02:25:22 +02:00
i32.const 1
i32.add
2019-03-28 11:07:47 +01:00
i32.ne
if
i32.const 0
2019-04-05 01:59:01 +02:00
i32.const 152
2019-04-04 02:25:22 +02:00
i32.const 34
2019-03-28 11:07:47 +01:00
i32.const 2
call $~lib/env/abort
unreachable
end
2019-04-01 22:23:11 +02:00
)
2019-04-04 02:25:22 +02:00
(func $null (; 9 ;) (type $FUNCSIG$v)
2019-04-01 22:23:11 +02:00
nop
)
2019-03-28 11:07:47 +01:00
)