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)
(data (i32.const 8) "\02\00\00\00\1e")
(data (i32.const 24) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(data (i32.const 56) "\02\00\00\00\16")
(data (i32.const 72) "g\00c\00.\00r\00e\00g\00i\00s\00t\00e\00r")
2019-04-04 02:25:22 +02:00
(data (i32.const 96) "\02\00\00\00\0e")
(data (i32.const 112) "g\00c\00.\00l\00i\00n\00k")
(data (i32.const 128) "\02\00\00\00\n")
(data (i32.const 144) "g\00c\00.\00t\00s")
(data (i32.const 160) "\02\00\00\00\12")
(data (i32.const 176) "g\00c\00.\00u\00n\00l\00i\00n\00k")
(data (i32.const 200) "\02\00\00\00\14")
(data (i32.const 216) "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))
(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-04 02:25:22 +02:00
(func $~lib/runtime/runtime.allocate (; 3 ;) (type $FUNCSIG$i) (result i32)
(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-03-28 11:07:47 +01:00
i32.const 72
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-03 21:47:38 +02:00
(func $~lib/runtime/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-04 02:25:22 +02:00
i32.const 236
2019-03-28 11:07:47 +01:00
i32.le_u
if
i32.const 0
i32.const 24
2019-04-04 02:25:22 +02:00
i32.const 82
2019-04-01 22:23:11 +02:00
i32.const 6
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-04 02:25:22 +02:00
i32.const 84
2019-04-01 22:23:11 +02:00
i32.const 6
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)
i32.const 112
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)
i32.const 176
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
i32.const 240
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
call $~lib/runtime/runtime.allocate
i32.const 3
call $~lib/runtime/runtime.register
global.set $~lib/runtime/ROOT
i32.const 1
global.set $~lib/started
end
call $~lib/runtime/runtime.allocate
i32.const 1
call $~lib/runtime/runtime.register
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
i32.const 144
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
i32.const 144
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
i32.const 144
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
i32.const 144
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
i32.const 144
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
i32.const 144
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
i32.const 216
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-04 02:25:22 +02:00
i32.const 144
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-04 02:25:22 +02:00
i32.const 144
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-04 02:25:22 +02:00
i32.const 144
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
)