assemblyscript/tests/compiler/std/runtime.optimized.wat

2992 lines
49 KiB
Plaintext
Raw Normal View History

2019-03-09 02:04:08 +01:00
(module
2019-03-31 21:58:42 +02:00
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
2019-03-09 02:04:08 +01:00
(type $FUNCSIG$ii (func (param i32) (result i32)))
(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-09 02:04:08 +01:00
(type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
2019-03-31 21:58:42 +02:00
(type $FUNCSIG$v (func))
2019-03-09 02:04:08 +01:00
(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-03-31 21:58:42 +02:00
(data (i32.const 8) "\03\00\00\00\1c")
(data (i32.const 24) "s\00t\00d\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(data (i32.const 56) "\03\00\00\00\10")
(data (i32.const 72) "b\00a\00r\00r\00i\00e\00r\001")
(data (i32.const 88) "\03\00\00\00\10")
(data (i32.const 104) "b\00a\00r\00r\00i\00e\00r\002")
(data (i32.const 120) "\03\00\00\00\10")
(data (i32.const 136) "b\00a\00r\00r\00i\00e\00r\003")
(data (i32.const 152) "\03\00\00\00,")
(data (i32.const 168) "~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s")
(data (i32.const 216) "\03\00\00\00\1e")
2019-03-17 00:11:16 +01:00
(data (i32.const 232) "~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
2019-03-30 13:58:20 +01:00
(table $0 4 funcref)
2019-04-02 10:12:57 +02:00
(elem (i32.const 0) $null $std/runtime/A~traverse $std/runtime/A~traverse $std/runtime/A~traverse)
2019-03-09 02:37:05 +01:00
(global $std/runtime/register_ref (mut i32) (i32.const 0))
2019-03-09 02:04:08 +01:00
(global $std/runtime/barrier1 (mut i32) (i32.const 0))
(global $std/runtime/barrier2 (mut i32) (i32.const 0))
(global $std/runtime/barrier3 (mut i32) (i32.const 0))
2019-03-31 21:58:42 +02:00
(global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0))
2019-03-09 02:04:08 +01:00
(global $std/runtime/ref1 (mut i32) (i32.const 0))
(global $std/runtime/header1 (mut i32) (i32.const 0))
(global $std/runtime/ref2 (mut i32) (i32.const 0))
(global $std/runtime/header2 (mut i32) (i32.const 0))
(global $std/runtime/ref3 (mut i32) (i32.const 0))
(global $std/runtime/ref4 (mut i32) (i32.const 0))
2019-03-09 02:37:05 +01:00
(global $std/runtime/header4 (mut i32) (i32.const 0))
2019-03-09 02:44:46 +01:00
(global $std/runtime/ref5 (mut i32) (i32.const 0))
2019-03-27 14:43:35 +01:00
(global $~lib/started (mut i32) (i32.const 0))
(global $~lib/capabilities i32 (i32.const 2))
2019-03-09 02:04:08 +01:00
(export "memory" (memory $0))
(export "table" (table $0))
2019-03-27 14:43:35 +01:00
(export "main" (func $std/runtime/main))
(export ".capabilities" (global $~lib/capabilities))
2019-04-02 10:12:57 +02:00
(func $std/runtime/A~traverse (; 2 ;) (type $FUNCSIG$vi) (param $0 i32)
2019-03-30 13:58:20 +01:00
nop
)
(func $~lib/allocator/tlsf/Root#setSLMap (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 22
i32.ge_u
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 159
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
i32.const 2
i32.shl
local.get $0
i32.add
local.get $2
i32.store offset=4
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Root#setHead (; 4 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 22
i32.ge_u
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 184
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $2
i32.const 32
i32.ge_u
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 185
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
i32.const 5
i32.shl
local.get $2
i32.add
i32.const 2
i32.shl
local.get $0
i32.add
local.get $3
i32.store offset=96
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Block#get:right (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
2019-03-09 02:04:08 +01:00
local.get $0
i32.load
i32.const -4
i32.and
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 104
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $0
i32.const 8
i32.add
local.get $0
i32.load
i32.const -4
i32.and
i32.add
local.tee $0
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 105
2019-03-09 02:04:08 +01:00
i32.const 11
call $~lib/env/abort
unreachable
end
local.get $0
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/fls<usize> (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
2019-03-09 02:04:08 +01:00
local.get $0
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 447
2019-03-09 02:04:08 +01:00
i32.const 2
call $~lib/env/abort
unreachable
end
i32.const 31
local.get $0
i32.clz
i32.sub
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Root#getHead (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 22
i32.ge_u
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 175
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $2
i32.const 32
i32.ge_u
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 176
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
i32.const 5
i32.shl
local.get $2
i32.add
i32.const 2
i32.shl
local.get $0
i32.add
i32.load offset=96
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Root#getSLMap (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 22
i32.ge_u
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 153
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
i32.const 2
i32.shl
local.get $0
i32.add
i32.load offset=4
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Root#remove (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
2019-03-09 02:04:08 +01:00
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
local.get $1
i32.load
local.tee $2
i32.const 1
i32.and
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 277
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $2
i32.const -4
i32.and
local.tee $3
i32.const 16
i32.ge_u
local.tee $2
if
local.get $3
i32.const 1073741824
i32.lt_u
local.set $2
end
local.get $2
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 279
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $3
i32.const 256
i32.lt_u
if (result i32)
local.get $3
i32.const 8
i32.div_u
2019-03-27 16:10:59 +01:00
local.set $4
2019-03-09 02:04:08 +01:00
i32.const 0
else
local.get $3
local.get $3
call $~lib/allocator/tlsf/fls<usize>
2019-03-27 16:10:59 +01:00
local.tee $2
2019-03-09 02:04:08 +01:00
i32.const 5
i32.sub
i32.shr_u
i32.const 32
i32.xor
2019-03-27 16:10:59 +01:00
local.set $4
local.get $2
2019-03-09 02:04:08 +01:00
i32.const 7
i32.sub
end
2019-03-27 16:10:59 +01:00
local.set $2
2019-03-09 02:04:08 +01:00
local.get $1
i32.load offset=8
2019-03-27 16:10:59 +01:00
local.set $3
2019-03-09 02:04:08 +01:00
local.get $1
i32.load offset=4
local.tee $5
if
local.get $5
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.store offset=8
end
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
if
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
local.get $5
i32.store offset=4
end
local.get $0
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
local.get $4
call $~lib/allocator/tlsf/Root#getHead
local.get $1
i32.eq
if
local.get $0
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
local.get $4
local.get $3
call $~lib/allocator/tlsf/Root#setHead
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.eqz
if
local.get $0
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
local.get $0
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
call $~lib/allocator/tlsf/Root#getSLMap
i32.const 1
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.shl
i32.const -1
i32.xor
i32.and
2019-03-27 16:10:59 +01:00
local.tee $1
2019-03-09 02:04:08 +01:00
call $~lib/allocator/tlsf/Root#setSLMap
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-09 02:04:08 +01:00
i32.eqz
if
local.get $0
local.get $0
i32.load
i32.const 1
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
i32.shl
i32.const -1
i32.xor
i32.and
i32.store
end
end
end
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Block#get:left (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
2019-03-09 02:04:08 +01:00
local.get $0
i32.load
i32.const 2
i32.and
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 96
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $0
i32.const 4
i32.sub
i32.load
local.tee $0
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 97
2019-03-09 02:04:08 +01:00
i32.const 11
call $~lib/env/abort
unreachable
end
local.get $0
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Root#setJump (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
2019-03-09 02:04:08 +01:00
local.get $0
i32.load
i32.const 1
i32.and
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 353
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $0
call $~lib/allocator/tlsf/Block#get:right
local.get $1
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 354
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
i32.load
i32.const 2
i32.and
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 355
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
i32.const 4
i32.sub
local.get $0
i32.store
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Root#insert (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
2019-03-09 02:04:08 +01:00
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
local.get $1
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 208
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
i32.load
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.and
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 210
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
i32.load
i32.const -4
i32.and
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 16
i32.ge_u
local.tee $2
if
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.const 1073741824
i32.lt_u
local.set $2
end
local.get $2
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 212
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
call $~lib/allocator/tlsf/Block#get:right
local.tee $2
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 216
2019-03-09 02:04:08 +01:00
i32.const 23
call $~lib/env/abort
unreachable
end
local.get $2
i32.load
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 1
i32.and
if
local.get $0
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
call $~lib/allocator/tlsf/Root#remove
local.get $1
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.const -4
i32.and
i32.const 8
i32.add
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.add
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.store
local.get $1
call $~lib/allocator/tlsf/Block#get:right
2019-03-27 16:10:59 +01:00
local.tee $2
2019-03-09 02:04:08 +01:00
i32.load
2019-03-27 16:10:59 +01:00
local.set $4
2019-03-09 02:04:08 +01:00
end
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.const 2
i32.and
if
local.get $1
call $~lib/allocator/tlsf/Block#get:left
2019-03-27 16:10:59 +01:00
local.tee $1
2019-03-09 02:04:08 +01:00
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 230
2019-03-09 02:04:08 +01:00
i32.const 24
call $~lib/env/abort
unreachable
end
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-09 02:04:08 +01:00
i32.load
2019-03-27 16:10:59 +01:00
local.tee $5
2019-03-09 02:04:08 +01:00
i32.const 1
i32.and
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 232
2019-03-09 02:04:08 +01:00
i32.const 6
call $~lib/env/abort
unreachable
end
local.get $0
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-09 02:04:08 +01:00
call $~lib/allocator/tlsf/Root#remove
2019-03-27 16:10:59 +01:00
local.get $1
local.get $3
2019-03-09 02:04:08 +01:00
i32.const -4
i32.and
i32.const 8
i32.add
2019-03-27 16:10:59 +01:00
local.get $5
2019-03-09 02:04:08 +01:00
i32.add
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.store
end
2019-03-27 16:10:59 +01:00
local.get $2
local.get $4
2019-03-09 02:04:08 +01:00
i32.const 2
i32.or
i32.store
local.get $1
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
call $~lib/allocator/tlsf/Root#setJump
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.const -4
i32.and
local.tee $3
i32.const 16
i32.ge_u
2019-03-27 16:10:59 +01:00
local.tee $2
2019-03-09 02:04:08 +01:00
if
local.get $3
i32.const 1073741824
i32.lt_u
2019-03-27 16:10:59 +01:00
local.set $2
2019-03-09 02:04:08 +01:00
end
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 245
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $0
local.get $3
i32.const 256
i32.lt_u
if (result i32)
local.get $3
i32.const 8
i32.div_u
2019-03-27 16:10:59 +01:00
local.set $3
2019-03-09 02:04:08 +01:00
i32.const 0
else
local.get $3
local.get $3
call $~lib/allocator/tlsf/fls<usize>
local.tee $2
i32.const 5
i32.sub
i32.shr_u
i32.const 32
i32.xor
2019-03-27 16:10:59 +01:00
local.set $3
2019-03-09 02:04:08 +01:00
local.get $2
i32.const 7
i32.sub
end
local.tee $2
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
call $~lib/allocator/tlsf/Root#getHead
2019-03-27 16:10:59 +01:00
local.set $4
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 0
i32.store offset=4
local.get $1
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.store offset=8
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
if
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
local.get $1
i32.store offset=4
end
local.get $0
local.get $2
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
local.get $1
call $~lib/allocator/tlsf/Root#setHead
local.get $0
local.get $0
i32.load
i32.const 1
local.get $2
i32.shl
i32.or
i32.store
local.get $0
local.get $2
local.get $0
local.get $2
call $~lib/allocator/tlsf/Root#getSLMap
i32.const 1
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.shl
i32.or
call $~lib/allocator/tlsf/Root#setSLMap
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Root#addMemory (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
2019-03-09 02:04:08 +01:00
(local $3 i32)
(local $4 i32)
local.get $1
local.get $2
i32.gt_u
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 396
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
i32.const 7
i32.and
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 397
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $2
i32.const 7
i32.and
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 398
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
i32.const 2912
i32.load
local.tee $3
if
local.get $1
local.get $3
i32.const 4
i32.add
i32.lt_u
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 403
2019-03-09 02:04:08 +01:00
i32.const 6
call $~lib/env/abort
unreachable
end
local.get $1
i32.const 8
i32.sub
local.get $3
i32.eq
if
local.get $3
i32.load
local.set $4
local.get $1
i32.const 8
i32.sub
local.set $1
end
else
local.get $1
local.get $0
i32.const 2916
i32.add
i32.lt_u
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 412
2019-03-09 02:04:08 +01:00
i32.const 6
call $~lib/env/abort
unreachable
end
end
local.get $2
local.get $1
i32.sub
local.tee $2
i32.const 32
i32.lt_u
if
return
end
local.get $1
local.get $4
i32.const 2
i32.and
local.get $2
i32.const 16
i32.sub
i32.const 1
i32.or
i32.or
i32.store
local.get $1
i32.const 0
i32.store offset=4
local.get $1
i32.const 0
i32.store offset=8
local.get $1
local.get $2
i32.add
i32.const 8
i32.sub
local.tee $2
i32.const 2
i32.store
i32.const 2912
local.get $2
i32.store
local.get $0
local.get $1
call $~lib/allocator/tlsf/Root#insert
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/ffs<usize> (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
2019-03-09 02:04:08 +01:00
local.get $0
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 441
2019-03-09 02:04:08 +01:00
i32.const 2
call $~lib/env/abort
unreachable
end
local.get $0
i32.ctz
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Root#search (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
2019-03-09 02:04:08 +01:00
(local $2 i32)
2019-03-27 16:10:59 +01:00
(local $3 i32)
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 16
i32.ge_u
local.tee $2
if
local.get $1
i32.const 1073741824
i32.lt_u
local.set $2
end
local.get $2
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 315
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $1
i32.const 256
i32.lt_u
if (result i32)
i32.const 0
local.set $2
local.get $1
i32.const 8
i32.div_u
else
local.get $1
call $~lib/allocator/tlsf/fls<usize>
2019-03-27 16:10:59 +01:00
local.tee $3
i32.const 7
i32.sub
local.set $2
local.get $1
local.get $3
2019-03-09 02:04:08 +01:00
i32.const 5
i32.sub
i32.shr_u
i32.const 32
i32.xor
2019-03-27 16:10:59 +01:00
local.tee $1
2019-03-09 02:04:08 +01:00
i32.const 31
i32.lt_u
if (result i32)
local.get $1
i32.const 1
i32.add
else
local.get $2
i32.const 1
i32.add
local.set $2
i32.const 0
end
end
local.set $1
local.get $0
local.get $2
call $~lib/allocator/tlsf/Root#getSLMap
i32.const -1
local.get $1
i32.shl
i32.and
local.tee $1
if (result i32)
local.get $0
local.get $2
local.get $1
call $~lib/allocator/tlsf/ffs<usize>
call $~lib/allocator/tlsf/Root#getHead
else
local.get $0
i32.load
i32.const -1
local.get $2
i32.const 1
i32.add
i32.shl
i32.and
2019-03-27 16:10:59 +01:00
local.tee $1
2019-03-09 02:04:08 +01:00
if (result i32)
local.get $0
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-09 02:04:08 +01:00
call $~lib/allocator/tlsf/ffs<usize>
local.tee $2
call $~lib/allocator/tlsf/Root#getSLMap
local.tee $1
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 342
2019-03-09 02:04:08 +01:00
i32.const 16
call $~lib/env/abort
unreachable
end
local.get $0
local.get $2
local.get $1
call $~lib/allocator/tlsf/ffs<usize>
call $~lib/allocator/tlsf/Root#getHead
else
i32.const 0
end
end
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/Root#use (; 16 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
2019-03-09 02:04:08 +01:00
(local $3 i32)
(local $4 i32)
local.get $1
i32.load
local.tee $4
i32.const 1
i32.and
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 367
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $2
i32.const 16
i32.ge_u
local.tee $3
if
local.get $2
i32.const 1073741824
i32.lt_u
local.set $3
end
local.get $3
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 368
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $2
i32.const 7
i32.and
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 369
2019-03-09 02:04:08 +01:00
i32.const 4
call $~lib/env/abort
unreachable
end
local.get $0
local.get $1
call $~lib/allocator/tlsf/Root#remove
local.get $4
i32.const -4
i32.and
local.get $2
i32.sub
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 24
i32.ge_u
if
local.get $1
local.get $4
i32.const 2
i32.and
local.get $2
i32.or
i32.store
local.get $1
i32.const 8
i32.add
local.get $2
i32.add
2019-03-27 16:10:59 +01:00
local.tee $2
local.get $3
2019-03-09 02:04:08 +01:00
i32.const 8
i32.sub
i32.const 1
i32.or
i32.store
local.get $0
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
call $~lib/allocator/tlsf/Root#insert
else
local.get $1
local.get $4
i32.const -2
i32.and
i32.store
local.get $1
call $~lib/allocator/tlsf/Block#get:right
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 387
2019-03-09 02:04:08 +01:00
i32.const 25
call $~lib/env/abort
unreachable
end
2019-03-27 16:10:59 +01:00
local.get $0
local.get $0
2019-03-09 02:04:08 +01:00
i32.load
i32.const -3
i32.and
i32.store
end
local.get $1
i32.const 8
i32.add
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/__mem_allocate (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
2019-03-09 02:04:08 +01:00
(local $1 i32)
(local $2 i32)
(local $3 i32)
global.get $~lib/allocator/tlsf/ROOT
2019-03-27 16:10:59 +01:00
local.tee $2
2019-03-09 02:04:08 +01:00
i32.eqz
if
i32.const 1
current_memory
local.tee $1
2019-03-14 12:52:46 +01:00
i32.gt_s
2019-03-27 16:10:59 +01:00
local.tee $2
2019-03-09 02:04:08 +01:00
if (result i32)
i32.const 1
2019-03-14 12:52:46 +01:00
local.get $1
2019-03-09 02:04:08 +01:00
i32.sub
grow_memory
i32.const 0
i32.lt_s
else
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
end
if
unreachable
end
2019-03-17 00:11:16 +01:00
i32.const 264
2019-03-27 16:10:59 +01:00
local.set $2
2019-03-17 00:11:16 +01:00
i32.const 264
2019-03-09 02:04:08 +01:00
global.set $~lib/allocator/tlsf/ROOT
i32.const 2912
i32.const 0
i32.store
2019-03-17 00:11:16 +01:00
i32.const 264
2019-03-09 02:04:08 +01:00
i32.const 0
i32.store
i32.const 0
2019-03-27 16:10:59 +01:00
local.set $1
2019-03-09 02:04:08 +01:00
loop $repeat|0
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-09 02:04:08 +01:00
i32.const 22
i32.lt_u
if
2019-03-17 00:11:16 +01:00
i32.const 264
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-09 02:04:08 +01:00
i32.const 0
call $~lib/allocator/tlsf/Root#setSLMap
i32.const 0
2019-03-27 16:10:59 +01:00
local.set $3
2019-03-09 02:04:08 +01:00
loop $repeat|1
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.const 32
i32.lt_u
if
2019-03-17 00:11:16 +01:00
i32.const 264
2019-03-09 02:04:08 +01:00
local.get $1
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.const 0
call $~lib/allocator/tlsf/Root#setHead
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.set $3
2019-03-09 02:04:08 +01:00
br $repeat|1
end
end
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.set $1
2019-03-09 02:04:08 +01:00
br $repeat|0
end
end
2019-03-17 00:11:16 +01:00
i32.const 264
i32.const 3184
2019-03-09 02:04:08 +01:00
current_memory
i32.const 16
i32.shl
call $~lib/allocator/tlsf/Root#addMemory
end
2019-03-27 16:10:59 +01:00
local.get $0
2019-03-09 02:04:08 +01:00
i32.const 1073741824
i32.gt_u
if
unreachable
end
2019-03-14 12:52:46 +01:00
local.get $2
2019-03-27 16:10:59 +01:00
local.get $0
2019-03-14 12:52:46 +01:00
i32.const 7
i32.add
i32.const -8
i32.and
local.tee $0
i32.const 16
local.get $0
i32.const 16
i32.gt_u
select
2019-03-27 16:10:59 +01:00
local.tee $1
2019-03-14 12:52:46 +01:00
call $~lib/allocator/tlsf/Root#search
local.tee $0
i32.eqz
if
current_memory
2019-03-27 16:10:59 +01:00
local.tee $0
local.get $1
2019-03-14 12:52:46 +01:00
i32.const 65535
2019-03-09 02:04:08 +01:00
i32.add
2019-03-14 12:52:46 +01:00
i32.const -65536
2019-03-09 02:04:08 +01:00
i32.and
i32.const 16
2019-03-14 12:52:46 +01:00
i32.shr_u
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-14 12:52:46 +01:00
local.get $0
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-14 12:52:46 +01:00
i32.gt_s
select
grow_memory
i32.const 0
i32.lt_s
2019-03-09 02:04:08 +01:00
if
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
grow_memory
i32.const 0
i32.lt_s
if
unreachable
end
end
2019-03-27 16:10:59 +01:00
local.get $2
local.get $0
2019-03-14 12:52:46 +01:00
i32.const 16
i32.shl
current_memory
i32.const 16
i32.shl
call $~lib/allocator/tlsf/Root#addMemory
local.get $2
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-14 12:52:46 +01:00
call $~lib/allocator/tlsf/Root#search
local.tee $0
i32.eqz
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 502
2019-03-14 12:52:46 +01:00
i32.const 12
call $~lib/env/abort
unreachable
end
2019-03-09 02:04:08 +01:00
end
2019-03-14 12:52:46 +01:00
local.get $0
i32.load
i32.const -4
i32.and
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-14 12:52:46 +01:00
i32.lt_u
2019-03-09 02:04:08 +01:00
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 505
2019-03-14 04:33:58 +01:00
i32.const 2
2019-03-09 02:04:08 +01:00
call $~lib/env/abort
unreachable
end
2019-03-14 12:52:46 +01:00
local.get $2
2019-03-27 16:10:59 +01:00
local.get $0
local.get $1
2019-03-09 02:04:08 +01:00
call $~lib/allocator/tlsf/Root#use
)
2019-04-01 22:23:11 +02:00
(func $~lib/runtime/runtime.allocate (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
2019-03-11 07:45:47 +01:00
(local $1 i32)
i32.const 1
i32.const 32
local.get $0
i32.const 15
i32.add
i32.clz
i32.sub
i32.shl
2019-03-27 17:21:52 +01:00
call $~lib/allocator/tlsf/__mem_allocate
2019-03-11 07:45:47 +01:00
local.tee $1
i32.const -1520547049
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
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
)
2019-03-30 13:58:20 +01:00
(func $~lib/util/memory/memcpy (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
2019-03-09 02:04:08 +01:00
(local $3 i32)
(local $4 i32)
(local $5 i32)
loop $continue|0
local.get $1
i32.const 3
i32.and
local.get $2
local.get $2
select
if
local.get $0
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $0
local.get $1
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $1
local.get $3
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.load8_u
i32.store8
local.get $2
i32.const 1
i32.sub
local.set $2
br $continue|0
end
end
local.get $0
i32.const 3
i32.and
i32.eqz
if
loop $continue|1
local.get $2
i32.const 16
i32.ge_u
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.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
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 $1
i32.const 8
i32.add
local.set $1
local.get $0
i32.const 8
i32.add
local.set $0
end
local.get $2
i32.const 4
i32.and
if
local.get $0
local.get $1
i32.load
i32.store
local.get $1
i32.const 4
i32.add
local.set $1
local.get $0
i32.const 4
i32.add
local.set $0
end
local.get $2
i32.const 2
i32.and
if
local.get $0
local.get $1
i32.load16_u
i32.store16
local.get $1
i32.const 2
i32.add
local.set $1
local.get $0
i32.const 2
i32.add
local.set $0
end
local.get $2
i32.const 1
i32.and
if
local.get $0
local.get $1
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
local.get $0
i32.const 3
i32.and
local.tee $3
i32.const 1
i32.ne
if
local.get $3
i32.const 2
i32.eq
br_if $case1|2
local.get $3
i32.const 3
i32.eq
br_if $case2|2
br $break|2
end
local.get $1
i32.load
local.set $5
local.get $0
local.get $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $0
local.get $1
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $1
local.get $3
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.load8_u
i32.store8
local.get $2
i32.const 3
i32.sub
local.set $2
loop $continue|3
local.get $2
i32.const 17
i32.ge_u
if
local.get $0
local.get $1
i32.const 1
i32.add
i32.load
local.tee $3
i32.const 8
i32.shl
local.get $5
i32.const 24
i32.shr_u
i32.or
i32.store
local.get $0
i32.const 4
i32.add
2019-03-27 16:10:59 +01:00
local.get $3
i32.const 24
i32.shr_u
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 5
i32.add
i32.load
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 8
i32.shl
i32.or
i32.store
local.get $0
i32.const 8
i32.add
2019-03-27 16:10:59 +01:00
local.get $3
i32.const 24
i32.shr_u
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 9
i32.add
i32.load
local.tee $3
i32.const 8
i32.shl
i32.or
i32.store
local.get $0
i32.const 12
i32.add
local.get $1
i32.const 13
i32.add
i32.load
local.tee $5
i32.const 8
i32.shl
local.get $3
i32.const 24
i32.shr_u
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
end
br $break|2
end
local.get $1
i32.load
local.set $5
local.get $0
local.get $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $0
local.get $1
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $1
local.get $3
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.load8_u
i32.store8
local.get $2
i32.const 2
i32.sub
local.set $2
loop $continue|4
local.get $2
i32.const 18
i32.ge_u
if
local.get $0
local.get $1
i32.const 2
i32.add
i32.load
local.tee $3
i32.const 16
i32.shl
local.get $5
i32.const 16
i32.shr_u
i32.or
i32.store
local.get $0
i32.const 4
i32.add
2019-03-27 16:10:59 +01:00
local.get $3
i32.const 16
i32.shr_u
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 6
i32.add
i32.load
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 16
i32.shl
i32.or
i32.store
local.get $0
i32.const 8
i32.add
2019-03-27 16:10:59 +01:00
local.get $3
i32.const 16
i32.shr_u
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 10
i32.add
i32.load
local.tee $3
i32.const 16
i32.shl
i32.or
i32.store
local.get $0
i32.const 12
i32.add
local.get $1
i32.const 14
i32.add
i32.load
local.tee $5
i32.const 16
i32.shl
local.get $3
i32.const 16
i32.shr_u
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
end
br $break|2
end
local.get $1
i32.load
local.set $5
local.get $0
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $0
local.get $1
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $1
local.get $3
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.load8_u
i32.store8
local.get $2
i32.const 1
i32.sub
local.set $2
loop $continue|5
local.get $2
i32.const 19
i32.ge_u
if
local.get $0
local.get $1
i32.const 3
i32.add
i32.load
local.tee $3
i32.const 24
i32.shl
local.get $5
i32.const 8
i32.shr_u
i32.or
i32.store
local.get $0
i32.const 4
i32.add
2019-03-27 16:10:59 +01:00
local.get $3
i32.const 8
i32.shr_u
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 7
i32.add
i32.load
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 24
i32.shl
i32.or
i32.store
local.get $0
i32.const 8
i32.add
2019-03-27 16:10:59 +01:00
local.get $3
i32.const 8
i32.shr_u
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 11
i32.add
i32.load
local.tee $3
i32.const 24
i32.shl
i32.or
i32.store
local.get $0
i32.const 12
i32.add
local.get $1
i32.const 15
i32.add
i32.load
local.tee $5
i32.const 24
i32.shl
local.get $3
i32.const 8
i32.shr_u
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
end
end
end
local.get $2
i32.const 16
i32.and
if
local.get $0
local.get $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $0
local.get $1
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $1
local.get $3
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.load8_u
i32.store8
end
local.get $2
i32.const 8
i32.and
if
local.get $0
local.get $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $0
local.get $1
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $1
local.get $3
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.load8_u
i32.store8
end
local.get $2
i32.const 4
i32.and
if
local.get $0
local.get $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
local.get $1
i32.const 1
i32.add
local.tee $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $0
local.get $1
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $1
local.get $3
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.load8_u
i32.store8
end
local.get $2
i32.const 2
i32.and
if
local.get $0
local.get $1
i32.load8_u
i32.store8
local.get $0
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $0
local.get $1
i32.const 1
i32.add
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $1
local.get $3
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.load8_u
i32.store8
end
local.get $2
i32.const 1
i32.and
if
local.get $0
local.get $1
i32.load8_u
i32.store8
end
)
2019-03-30 13:58:20 +01:00
(func $~lib/memory/memory.copy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
2019-03-09 02:04:08 +01:00
(local $3 i32)
(local $4 i32)
2019-03-14 12:52:46 +01:00
block $~lib/util/memory/memmove|inlined.0
2019-03-09 02:04:08 +01:00
local.get $0
2019-03-17 00:11:16 +01:00
local.get $1
2019-03-14 12:52:46 +01:00
i32.eq
br_if $~lib/util/memory/memmove|inlined.0
2019-03-09 02:04:08 +01:00
local.get $1
local.get $2
2019-03-17 00:11:16 +01:00
i32.add
local.get $0
2019-03-14 12:52:46 +01:00
i32.le_u
2019-03-17 00:11:16 +01:00
local.tee $3
2019-03-14 12:52:46 +01:00
i32.eqz
if
2019-03-17 00:11:16 +01:00
local.get $0
2019-03-14 12:52:46 +01:00
local.get $2
i32.add
local.get $1
i32.le_u
2019-03-17 00:11:16 +01:00
local.set $3
2019-03-14 12:52:46 +01:00
end
2019-03-17 00:11:16 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
if
2019-03-17 00:11:16 +01:00
local.get $0
2019-03-14 12:52:46 +01:00
local.get $1
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
call $~lib/util/memory/memcpy
br $~lib/util/memory/memmove|inlined.0
end
2019-03-17 00:11:16 +01:00
local.get $0
2019-03-14 12:52:46 +01:00
local.get $1
i32.lt_u
if
local.get $1
i32.const 7
i32.and
2019-03-17 00:11:16 +01:00
local.get $0
2019-03-14 12:52:46 +01:00
i32.const 7
i32.and
i32.eq
if
loop $continue|0
2019-03-17 00:11:16 +01:00
local.get $0
2019-03-14 12:52:46 +01:00
i32.const 7
i32.and
if
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.eqz
br_if $~lib/util/memory/memmove|inlined.0
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.const 1
i32.sub
2019-03-17 00:11:16 +01:00
local.set $2
local.get $0
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-14 12:52:46 +01:00
i32.const 1
i32.add
2019-03-17 00:11:16 +01:00
local.set $0
2019-03-14 12:52:46 +01:00
local.get $1
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-14 12:52:46 +01:00
i32.const 1
i32.add
local.set $1
2019-03-17 00:11:16 +01:00
local.get $3
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-14 12:52:46 +01:00
i32.load8_u
i32.store8
br $continue|0
end
end
loop $continue|1
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.const 8
i32.ge_u
2019-03-09 02:04:08 +01:00
if
2019-03-17 00:11:16 +01:00
local.get $0
2019-03-14 12:52:46 +01:00
local.get $1
i64.load
i64.store
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.const 8
i32.sub
2019-03-17 00:11:16 +01:00
local.set $2
local.get $0
2019-03-14 12:52:46 +01:00
i32.const 8
i32.add
2019-03-17 00:11:16 +01:00
local.set $0
2019-03-14 12:52:46 +01:00
local.get $1
i32.const 8
i32.add
local.set $1
br $continue|1
2019-03-09 02:04:08 +01:00
end
2019-03-14 12:52:46 +01:00
end
end
loop $continue|2
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
if
2019-03-17 00:11:16 +01:00
local.get $0
2019-03-27 16:10:59 +01:00
local.tee $3
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
2019-03-17 00:11:16 +01:00
local.set $0
2019-03-09 02:04:08 +01:00
local.get $1
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
local.set $1
2019-03-17 00:11:16 +01:00
local.get $3
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
i32.load8_u
i32.store8
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.const 1
i32.sub
2019-03-17 00:11:16 +01:00
local.set $2
2019-03-14 12:52:46 +01:00
br $continue|2
2019-03-09 02:04:08 +01:00
end
end
2019-03-14 12:52:46 +01:00
else
local.get $1
i32.const 7
i32.and
2019-03-17 00:11:16 +01:00
local.get $0
2019-03-14 12:52:46 +01:00
i32.const 7
i32.and
i32.eq
if
loop $continue|3
2019-03-17 00:11:16 +01:00
local.get $0
2019-03-14 12:52:46 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
i32.add
2019-03-14 12:52:46 +01:00
i32.const 7
i32.and
if
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.eqz
br_if $~lib/util/memory/memmove|inlined.0
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.const 1
i32.sub
2019-03-17 00:11:16 +01:00
local.tee $2
local.get $0
2019-03-14 12:52:46 +01:00
i32.add
local.get $1
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.add
i32.load8_u
i32.store8
br $continue|3
end
end
loop $continue|4
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
i32.const 8
2019-03-14 12:52:46 +01:00
i32.ge_u
if
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.const 8
i32.sub
2019-03-17 00:11:16 +01:00
local.tee $2
local.get $0
2019-03-14 12:52:46 +01:00
i32.add
local.get $1
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.add
i64.load
i64.store
br $continue|4
end
2019-03-09 02:04:08 +01:00
end
end
2019-03-14 12:52:46 +01:00
loop $continue|5
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
if
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
i32.const 1
i32.sub
2019-03-17 00:11:16 +01:00
local.tee $2
local.get $0
2019-03-09 02:04:08 +01:00
i32.add
local.get $1
2019-03-17 00:11:16 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
i32.add
i32.load8_u
i32.store8
2019-03-14 12:52:46 +01:00
br $continue|5
2019-03-09 02:04:08 +01:00
end
end
end
end
)
2019-03-30 13:58:20 +01:00
(func $~lib/memory/memory.fill (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
2019-03-14 12:46:36 +01:00
(local $2 i32)
2019-03-14 12:52:46 +01:00
block $~lib/util/memory/memset|inlined.0
2019-03-14 12:46:36 +01:00
local.get $1
2019-03-14 12:52:46 +01:00
i32.eqz
br_if $~lib/util/memory/memset|inlined.0
local.get $0
i32.const 0
i32.store8
local.get $0
local.get $1
i32.add
i32.const 1
i32.sub
i32.const 0
i32.store8
local.get $1
i32.const 2
i32.le_u
br_if $~lib/util/memory/memset|inlined.0
local.get $0
i32.const 1
i32.add
i32.const 0
i32.store8
local.get $0
i32.const 2
i32.add
i32.const 0
i32.store8
local.get $0
local.get $1
i32.add
local.tee $2
i32.const 2
i32.sub
i32.const 0
i32.store8
local.get $2
i32.const 3
i32.sub
i32.const 0
i32.store8
local.get $1
i32.const 6
i32.le_u
br_if $~lib/util/memory/memset|inlined.0
local.get $0
i32.const 3
i32.add
i32.const 0
i32.store8
local.get $0
local.get $1
i32.add
i32.const 4
i32.sub
i32.const 0
i32.store8
local.get $1
i32.const 8
i32.le_u
br_if $~lib/util/memory/memset|inlined.0
local.get $1
i32.const 0
local.get $0
i32.sub
i32.const 3
i32.and
2019-03-27 16:10:59 +01:00
local.tee $1
2019-03-14 12:52:46 +01:00
i32.sub
2019-03-27 16:10:59 +01:00
local.set $2
2019-03-14 12:52:46 +01:00
local.get $0
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-14 12:52:46 +01:00
i32.add
local.tee $0
i32.const 0
i32.store
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-14 12:52:46 +01:00
i32.const -4
i32.and
local.tee $1
local.get $0
i32.add
i32.const 4
i32.sub
i32.const 0
i32.store
local.get $1
i32.const 8
i32.le_u
br_if $~lib/util/memory/memset|inlined.0
local.get $0
i32.const 4
i32.add
i32.const 0
i32.store
local.get $0
i32.const 8
i32.add
i32.const 0
i32.store
local.get $0
local.get $1
i32.add
local.tee $2
i32.const 12
i32.sub
i32.const 0
i32.store
local.get $2
i32.const 8
i32.sub
i32.const 0
i32.store
local.get $1
i32.const 24
i32.le_u
br_if $~lib/util/memory/memset|inlined.0
local.get $0
i32.const 12
i32.add
i32.const 0
i32.store
local.get $0
i32.const 16
i32.add
i32.const 0
i32.store
local.get $0
i32.const 20
i32.add
i32.const 0
i32.store
local.get $0
i32.const 24
i32.add
i32.const 0
i32.store
local.get $0
local.get $1
i32.add
local.tee $2
i32.const 28
i32.sub
i32.const 0
i32.store
local.get $2
i32.const 24
i32.sub
i32.const 0
i32.store
local.get $2
i32.const 20
i32.sub
i32.const 0
i32.store
local.get $2
i32.const 16
i32.sub
i32.const 0
i32.store
local.get $0
i32.const 4
i32.and
i32.const 24
i32.add
local.tee $2
local.get $0
i32.add
local.set $0
local.get $1
local.get $2
i32.sub
local.set $1
loop $continue|0
2019-03-14 12:46:36 +01:00
local.get $1
i32.const 32
2019-03-14 12:52:46 +01:00
i32.ge_u
if
local.get $0
i64.const 0
i64.store
local.get $0
i32.const 8
i32.add
i64.const 0
i64.store
local.get $0
i32.const 16
i32.add
i64.const 0
i64.store
local.get $0
i32.const 24
i32.add
i64.const 0
i64.store
local.get $1
i32.const 32
i32.sub
local.set $1
local.get $0
i32.const 32
i32.add
local.set $0
br $continue|0
end
2019-03-14 12:46:36 +01:00
end
end
)
2019-03-30 13:58:20 +01:00
(func $~lib/allocator/tlsf/__mem_free (; 22 ;) (type $FUNCSIG$vi) (param $0 i32)
2019-03-09 02:04:08 +01:00
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
if
global.get $~lib/allocator/tlsf/ROOT
local.tee $1
if
local.get $0
i32.const 8
i32.sub
local.tee $2
i32.load
local.tee $3
i32.const 1
i32.and
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 168
i32.const 518
2019-03-14 04:33:58 +01:00
i32.const 6
2019-03-09 02:04:08 +01:00
call $~lib/env/abort
unreachable
end
local.get $2
local.get $3
i32.const 1
i32.or
i32.store
local.get $1
local.get $0
i32.const 8
i32.sub
call $~lib/allocator/tlsf/Root#insert
end
end
)
2019-04-01 22:23:11 +02:00
(func $~lib/runtime/runtime.reallocate (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
2019-03-09 02:04:08 +01:00
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
local.get $0
i32.const 16
i32.sub
2019-03-27 16:10:59 +01:00
local.tee $4
2019-03-09 02:04:08 +01:00
i32.load offset=4
local.tee $2
local.get $1
i32.lt_u
if
i32.const 1
i32.const 32
2019-03-27 16:10:59 +01:00
local.get $1
2019-03-09 02:04:08 +01:00
i32.const 15
i32.add
i32.clz
i32.sub
i32.shl
2019-03-27 16:10:59 +01:00
local.tee $3
local.set $5
2019-03-09 02:04:08 +01:00
i32.const 1
i32.const 32
2019-03-27 16:10:59 +01:00
local.get $2
2019-03-09 02:04:08 +01:00
i32.const 15
i32.add
i32.clz
i32.sub
i32.shl
2019-03-27 16:10:59 +01:00
i32.const 0
local.get $0
i32.const 264
i32.gt_u
select
local.get $3
2019-03-09 02:04:08 +01:00
i32.lt_u
if
2019-03-27 16:10:59 +01:00
local.get $5
2019-03-27 17:21:52 +01:00
call $~lib/allocator/tlsf/__mem_allocate
2019-03-27 16:10:59 +01:00
local.tee $3
local.get $4
2019-03-14 12:46:36 +01:00
i32.load
2019-03-09 02:04:08 +01:00
i32.store
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.const 0
i32.store offset=8
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.const 0
i32.store offset=12
2019-03-27 16:10:59 +01:00
local.get $3
2019-03-09 02:04:08 +01:00
i32.const 16
i32.add
2019-03-27 16:10:59 +01:00
local.tee $5
2019-03-09 02:04:08 +01:00
local.get $0
local.get $2
2019-03-14 12:52:46 +01:00
call $~lib/memory/memory.copy
2019-03-09 02:04:08 +01:00
local.get $2
2019-03-27 16:10:59 +01:00
local.get $5
2019-03-09 02:04:08 +01:00
i32.add
local.get $1
local.get $2
i32.sub
2019-03-14 04:33:58 +01:00
call $~lib/memory/memory.fill
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:37:05 +01:00
i32.load
i32.const -1520547049
i32.eq
if
2019-03-10 21:38:15 +01:00
local.get $0
2019-03-17 00:11:16 +01:00
i32.const 264
2019-03-10 21:38:15 +01:00
i32.le_u
if
i32.const 0
2019-03-17 00:11:16 +01:00
i32.const 232
2019-04-02 10:12:57 +02:00
i32.const 64
2019-04-01 22:23:11 +02:00
i32.const 10
2019-03-10 21:38:15 +01:00
call $~lib/env/abort
unreachable
end
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-27 17:21:52 +01:00
call $~lib/allocator/tlsf/__mem_free
2019-03-13 09:05:02 +01:00
else
local.get $0
global.set $std/runtime/register_ref
2019-03-09 02:37:05 +01:00
end
2019-03-27 16:10:59 +01:00
local.get $3
local.set $4
2019-03-09 02:04:08 +01:00
local.get $5
local.set $0
else
local.get $0
local.get $2
i32.add
local.get $1
local.get $2
i32.sub
2019-03-14 04:33:58 +01:00
call $~lib/memory/memory.fill
2019-03-09 02:04:08 +01:00
end
end
2019-03-27 16:10:59 +01:00
local.get $4
2019-03-09 02:04:08 +01:00
local.get $1
i32.store offset=4
local.get $0
)
2019-04-01 22:23:11 +02:00
(func $~lib/runtime/runtime.discard (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
2019-03-09 02:04:08 +01:00
local.get $0
2019-03-17 00:11:16 +01:00
i32.const 264
2019-03-15 09:26:31 +01:00
i32.le_u
2019-03-09 02:04:08 +01:00
if
i32.const 0
2019-03-17 00:11:16 +01:00
i32.const 232
2019-04-02 10:12:57 +02:00
i32.const 89
2019-04-01 22:23:11 +02:00
i32.const 6
2019-03-09 02:04:08 +01:00
call $~lib/env/abort
unreachable
end
local.get $0
i32.const 16
i32.sub
2019-03-26 23:35:08 +01:00
local.tee $0
2019-03-09 02:04:08 +01:00
i32.load
i32.const -1520547049
i32.ne
if
i32.const 0
2019-03-17 00:11:16 +01:00
i32.const 232
2019-04-02 10:12:57 +02:00
i32.const 91
2019-04-01 22:23:11 +02:00
i32.const 6
2019-03-26 23:35:08 +01:00
call $~lib/env/abort
unreachable
end
local.get $0
2019-03-27 17:21:52 +01:00
call $~lib/allocator/tlsf/__mem_free
2019-03-26 23:35:08 +01:00
)
2019-04-01 22:23:11 +02:00
(func $~lib/runtime/runtime.register (; 25 ;) (type $FUNCSIG$vi) (param $0 i32)
2019-03-26 23:35:08 +01:00
(local $1 i32)
local.get $0
i32.const 264
i32.le_u
if
i32.const 0
i32.const 232
2019-04-02 10:12:57 +02:00
i32.const 102
2019-04-01 22:23:11 +02:00
i32.const 6
2019-03-26 23:35:08 +01:00
call $~lib/env/abort
unreachable
end
local.get $0
i32.const 16
i32.sub
local.tee $1
i32.load
i32.const -1520547049
i32.ne
if
i32.const 0
i32.const 232
2019-04-02 10:12:57 +02:00
i32.const 104
2019-04-01 22:23:11 +02:00
i32.const 6
2019-03-09 02:04:08 +01:00
call $~lib/env/abort
unreachable
end
2019-03-26 23:35:08 +01:00
local.get $1
2019-03-31 21:58:42 +02:00
i32.const 1
2019-03-26 23:35:08 +01:00
i32.store
local.get $0
global.set $std/runtime/register_ref
2019-03-09 02:04:08 +01:00
)
2019-03-30 13:58:20 +01:00
(func $start:std/runtime (; 26 ;) (type $FUNCSIG$v)
2019-03-09 02:04:08 +01:00
(local $0 i32)
(local $1 i32)
(local $2 i32)
loop $repeat|0
2019-03-26 23:35:08 +01:00
local.get $0
2019-03-09 02:04:08 +01:00
i32.const 9000
i32.lt_s
if
i32.const 1
i32.const 32
2019-03-26 23:35:08 +01:00
local.get $0
2019-03-09 02:04:08 +01:00
i32.const 15
i32.add
i32.clz
i32.sub
i32.shl
2019-03-26 23:35:08 +01:00
local.tee $1
2019-03-09 02:04:08 +01:00
i32.const 0
i32.ne
2019-03-26 23:35:08 +01:00
local.tee $2
if (result i32)
local.get $1
2019-03-09 02:04:08 +01:00
i32.const 1
i32.sub
2019-03-26 23:35:08 +01:00
local.get $1
2019-03-09 02:04:08 +01:00
i32.and
i32.eqz
2019-03-26 23:35:08 +01:00
else
local.get $2
2019-03-09 02:04:08 +01:00
end
if
2019-03-26 23:35:08 +01:00
local.get $0
2019-03-09 02:04:08 +01:00
i32.const 1
i32.add
2019-03-26 23:35:08 +01:00
local.set $0
2019-03-09 02:04:08 +01:00
br $repeat|0
else
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 41
2019-03-09 02:04:08 +01:00
i32.const 2
call $~lib/env/abort
unreachable
end
unreachable
end
end
i32.const 16
global.set $std/runtime/barrier1
global.get $std/runtime/barrier1
i32.const 1
i32.add
global.set $std/runtime/barrier2
loop $continue|1
i32.const 1
i32.const 32
global.get $std/runtime/barrier2
i32.const 16
i32.add
i32.clz
i32.sub
i32.shl
i32.const 1
i32.const 32
2019-03-26 23:35:08 +01:00
global.get $std/runtime/barrier2
2019-03-09 02:04:08 +01:00
i32.const 15
i32.add
i32.clz
i32.sub
i32.shl
i32.eq
if
global.get $std/runtime/barrier2
i32.const 1
i32.add
global.set $std/runtime/barrier2
br $continue|1
end
end
global.get $std/runtime/barrier2
i32.const 1
i32.add
global.set $std/runtime/barrier3
loop $continue|2
i32.const 1
i32.const 32
global.get $std/runtime/barrier3
i32.const 16
i32.add
i32.clz
i32.sub
i32.shl
i32.const 1
i32.const 32
2019-03-26 23:35:08 +01:00
global.get $std/runtime/barrier3
2019-03-09 02:04:08 +01:00
i32.const 15
i32.add
i32.clz
i32.sub
i32.shl
i32.eq
if
global.get $std/runtime/barrier3
i32.const 1
i32.add
global.set $std/runtime/barrier3
br $continue|2
end
end
2019-03-31 21:58:42 +02:00
i32.const 72
2019-03-09 02:04:08 +01:00
i32.const 1
global.get $std/runtime/barrier1
f64.convert_i32_u
f64.const 0
f64.const 0
f64.const 0
f64.const 0
call $~lib/env/trace
2019-03-31 21:58:42 +02:00
i32.const 104
2019-03-09 02:04:08 +01:00
i32.const 1
global.get $std/runtime/barrier2
f64.convert_i32_u
f64.const 0
f64.const 0
f64.const 0
f64.const 0
call $~lib/env/trace
2019-03-31 21:58:42 +02:00
i32.const 136
2019-03-09 02:04:08 +01:00
i32.const 1
global.get $std/runtime/barrier3
f64.convert_i32_u
f64.const 0
f64.const 0
f64.const 0
f64.const 0
call $~lib/env/trace
i32.const 1
2019-04-01 22:23:11 +02:00
call $~lib/runtime/runtime.allocate
2019-03-09 02:04:08 +01:00
global.set $std/runtime/ref1
global.get $std/runtime/ref1
i32.const 16
i32.sub
global.set $std/runtime/header1
global.get $std/runtime/header1
i32.load
i32.const -1520547049
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 56
2019-03-09 02:04:08 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/runtime/header1
i32.load offset=4
i32.const 1
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 57
2019-03-09 02:04:08 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/runtime/ref1
2019-03-26 23:35:08 +01:00
local.tee $0
2019-03-27 16:10:59 +01:00
local.get $0
2019-04-01 22:23:11 +02:00
global.get $std/runtime/barrier1
call $~lib/runtime/runtime.reallocate
2019-03-09 02:04:08 +01:00
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 58
2019-03-09 02:04:08 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/runtime/barrier1
global.get $std/runtime/header1
i32.load offset=4
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 59
2019-03-09 02:04:08 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/runtime/ref1
global.get $std/runtime/barrier2
2019-04-01 22:23:11 +02:00
call $~lib/runtime/runtime.reallocate
2019-03-09 02:04:08 +01:00
global.set $std/runtime/ref2
global.get $std/runtime/ref1
global.get $std/runtime/ref2
i32.eq
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 61
2019-03-09 02:04:08 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/runtime/ref2
i32.const 16
i32.sub
global.set $std/runtime/header2
global.get $std/runtime/barrier2
global.get $std/runtime/header2
i32.load offset=4
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 63
2019-03-09 02:04:08 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/runtime/ref2
2019-04-01 22:23:11 +02:00
call $~lib/runtime/runtime.discard
2019-03-09 02:04:08 +01:00
global.get $std/runtime/barrier2
2019-04-01 22:23:11 +02:00
call $~lib/runtime/runtime.allocate
2019-03-09 02:04:08 +01:00
global.set $std/runtime/ref3
global.get $std/runtime/ref1
global.get $std/runtime/ref3
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 66
2019-03-09 02:04:08 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/runtime/barrier1
2019-04-01 22:23:11 +02:00
call $~lib/runtime/runtime.allocate
2019-03-09 02:04:08 +01:00
global.set $std/runtime/ref4
2019-03-09 02:37:05 +01:00
global.get $std/runtime/ref4
2019-04-01 22:23:11 +02:00
call $~lib/runtime/runtime.register
2019-03-09 02:37:05 +01:00
global.get $std/runtime/register_ref
2019-03-09 02:04:08 +01:00
global.get $std/runtime/ref4
2019-03-09 02:37:05 +01:00
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 70
2019-03-09 02:37:05 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/runtime/register_ref
i32.const 16
i32.sub
global.set $std/runtime/header4
global.get $std/runtime/header4
i32.load
2019-03-31 21:58:42 +02:00
i32.const 1
2019-03-09 02:37:05 +01:00
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 72
2019-03-09 02:37:05 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/runtime/barrier1
global.get $std/runtime/header4
i32.load offset=4
i32.ne
2019-03-09 02:04:08 +01:00
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 73
2019-03-09 02:44:46 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
i32.const 10
2019-04-01 22:23:11 +02:00
call $~lib/runtime/runtime.allocate
2019-03-09 02:44:46 +01:00
global.set $std/runtime/ref5
global.get $std/runtime/ref5
i32.const 16
i32.sub
i32.load offset=4
i32.const 10
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 76
2019-03-09 02:44:46 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
global.get $std/runtime/ref5
i32.const 16
i32.sub
i32.load offset=4
i32.const 1
i32.shr_u
i32.const 5
i32.ne
if
i32.const 0
2019-03-31 21:58:42 +02:00
i32.const 24
2019-04-02 10:12:57 +02:00
i32.const 77
2019-03-09 02:04:08 +01:00
i32.const 0
call $~lib/env/abort
unreachable
end
)
2019-03-30 13:58:20 +01:00
(func $std/runtime/main (; 27 ;) (type $FUNCSIG$v)
2019-03-27 14:43:35 +01:00
global.get $~lib/started
i32.eqz
if
call $start:std/runtime
i32.const 1
global.set $~lib/started
end
2019-03-09 02:04:08 +01:00
)
2019-03-30 13:58:20 +01:00
(func $null (; 28 ;) (type $FUNCSIG$v)
2019-03-09 02:04:08 +01:00
nop
)
)