Remove noMemory option; Omit 'start' if 'main' is present; Unwrap more unnecessary blocks

This commit is contained in:
dcodeIO
2018-06-27 19:03:39 +02:00
parent 0d64c9661a
commit 27e61f8f67
42 changed files with 5337 additions and 3741 deletions

View File

@ -5,7 +5,7 @@
(type $v (func))
(global $~lib/allocator/tlsf/ROOT (mut i32) (i32.const 0))
(global $assembly/ugc/GC (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 4))
(global $HEAP_BASE i32 (i32.const 8))
(memory $0 1)
(export "gc_collect" (func $assembly/ugc/gc_collect))
(export "gc_pause" (func $assembly/ugc/gc_pause))
@ -14,9 +14,7 @@
(start $start)
(func $assembly/ugc/Control.create (; 0 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(i32.store
;;@ assembly/ugc.ts:112:15
(get_local $0)
(i32.or
(get_local $0)
@ -41,15 +39,12 @@
)
)
(i32.store
;;@ assembly/ugc.ts:113:4
(tee_local $1
;;@ assembly/ugc.ts:113:4
(tee_local $2
;;@ assembly/ugc.ts:113:15
(i32.add
;;@ assembly/ugc.ts:113:40
(get_local $0)
(i32.const 8)
)
;;@ assembly/ugc.ts:113:15
(i32.add
(get_local $0)
(i32.const 8)
)
)
(i32.or
@ -76,7 +71,6 @@
)
;;@ assembly/ugc.ts:116:4
(i32.store8 offset=28
;;@ assembly/ugc.ts:111:18
(get_local $0)
;;@ assembly/ugc.ts:116:20
(i32.const 0)
@ -90,14 +84,12 @@
;;@ assembly/ugc.ts:118:4
(i32.store offset=16
(get_local $0)
;;@ assembly/ugc.ts:118:19
(get_local $0)
)
;;@ assembly/ugc.ts:119:4
(i32.store offset=20
(get_local $0)
;;@ assembly/ugc.ts:119:17
(get_local $2)
(get_local $1)
)
;;@ assembly/ugc.ts:120:4
(i32.store offset=24
@ -107,11 +99,14 @@
(get_local $0)
)
)
;;@ assembly/ugc.ts:121:11
(get_local $0)
)
(func $assembly/ugc/Control#set:paused (; 1 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
(set_local $2
;;@ assembly/ugc.ts:102:4
(get_local $0)
)
;;@ assembly/ugc.ts:102:17
(if
(i32.and
@ -119,12 +114,12 @@
(i32.const 1)
)
(i32.store8 offset=28
;;@ assembly/ugc.ts:103:8
(get_local $0)
(tee_local $2
(get_local $2)
(tee_local $0
(i32.or
;;@ assembly/ugc.ts:103:8
(i32.load8_u offset=28
(get_local $0)
(get_local $2)
)
;;@ assembly/ugc.ts:103:22
(i32.const 128)
@ -132,23 +127,22 @@
)
)
(i32.store8 offset=28
;;@ assembly/ugc.ts:104:8
(get_local $0)
(tee_local $2
(get_local $2)
(tee_local $0
(i32.and
;;@ assembly/ugc.ts:104:8
(i32.load8_u offset=28
(get_local $0)
(get_local $2)
)
(i32.const -129)
)
)
)
)
;;@ assembly/ugc.ts:101:27
;;@ assembly/ugc.ts:102:4
(i32.store8 offset=28
;;@ assembly/ugc.ts:102:4
(get_local $0)
(get_local $2)
(get_local $0)
)
)
(func $~lib/allocator/tlsf/Root#remove (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
@ -175,22 +169,18 @@
;;@ ~lib/allocator/tlsf.ts:264:15
(i32.const 256)
)
;;@ ~lib/allocator/tlsf.ts:264:24
(block (result i32)
;;@ ~lib/allocator/tlsf.ts:266:6
(set_local $4
;;@ ~lib/allocator/tlsf.ts:266:11
(i32.div_u
;;@ ~lib/allocator/tlsf.ts:266:17
(get_local $2)
;;@ ~lib/allocator/tlsf.ts:266:24
(i32.const 8)
)
)
;;@ ~lib/allocator/tlsf.ts:265:11
(i32.const 0)
)
;;@ ~lib/allocator/tlsf.ts:267:11
(block (result i32)
;;@ ~lib/allocator/tlsf.ts:269:6
(set_local $4
@ -198,7 +188,6 @@
(i32.xor
;;@ ~lib/allocator/tlsf.ts:269:17
(i32.shr_u
;;@ ~lib/allocator/tlsf.ts:269:18
(get_local $2)
;;@ ~lib/allocator/tlsf.ts:269:26
(i32.sub
@ -207,7 +196,6 @@
(i32.sub
(i32.const 31)
(i32.clz
;;@ ~lib/allocator/tlsf.ts:268:22
(get_local $2)
)
)
@ -220,9 +208,7 @@
)
)
(i32.sub
;;@ ~lib/allocator/tlsf.ts:270:6
(get_local $3)
;;@ ~lib/allocator/tlsf.ts:270:12
(i32.const 7)
)
)
@ -247,18 +233,15 @@
;;@ ~lib/allocator/tlsf.ts:276:14
(i32.store offset=8
(get_local $5)
;;@ ~lib/allocator/tlsf.ts:276:26
(get_local $2)
)
)
;;@ ~lib/allocator/tlsf.ts:277:4
(if
;;@ ~lib/allocator/tlsf.ts:277:8
(get_local $2)
;;@ ~lib/allocator/tlsf.ts:277:14
(i32.store offset=4
(get_local $2)
;;@ ~lib/allocator/tlsf.ts:277:26
(get_local $5)
)
)
@ -269,16 +252,13 @@
(get_local $1)
(i32.load offset=96
(i32.add
;;@ ~lib/allocator/tlsf.ts:280:17
(get_local $0)
(i32.shl
(i32.add
(i32.shl
;;@ ~lib/allocator/tlsf.ts:280:30
(get_local $3)
(i32.const 5)
)
;;@ ~lib/allocator/tlsf.ts:280:34
(get_local $4)
)
(i32.const 2)
@ -290,39 +270,32 @@
(block
(i32.store offset=96
(i32.add
;;@ ~lib/allocator/tlsf.ts:281:6
(get_local $0)
(i32.shl
(i32.add
(i32.shl
;;@ ~lib/allocator/tlsf.ts:281:19
(get_local $3)
(i32.const 5)
)
;;@ ~lib/allocator/tlsf.ts:281:23
(get_local $4)
)
(i32.const 2)
)
)
;;@ ~lib/allocator/tlsf.ts:281:27
(get_local $2)
)
;;@ ~lib/allocator/tlsf.ts:284:6
(if
;;@ ~lib/allocator/tlsf.ts:284:10
(i32.eqz
;;@ ~lib/allocator/tlsf.ts:284:11
(get_local $2)
)
;;@ ~lib/allocator/tlsf.ts:284:17
(block
(i32.store offset=4
(i32.add
;;@ ~lib/allocator/tlsf.ts:286:8
(get_local $0)
(i32.shl
;;@ ~lib/allocator/tlsf.ts:286:22
(get_local $3)
(i32.const 2)
)
@ -332,10 +305,8 @@
(i32.and
(i32.load offset=4
(i32.add
;;@ ~lib/allocator/tlsf.ts:285:20
(get_local $0)
(i32.shl
;;@ ~lib/allocator/tlsf.ts:285:34
(get_local $3)
(i32.const 2)
)
@ -347,7 +318,6 @@
(i32.shl
;;@ ~lib/allocator/tlsf.ts:286:37
(i32.const 1)
;;@ ~lib/allocator/tlsf.ts:286:42
(get_local $4)
)
(i32.const -1)
@ -359,7 +329,6 @@
(if
;;@ ~lib/allocator/tlsf.ts:289:12
(i32.eqz
;;@ ~lib/allocator/tlsf.ts:289:13
(get_local $1)
)
;;@ ~lib/allocator/tlsf.ts:289:20
@ -375,7 +344,6 @@
(i32.shl
;;@ ~lib/allocator/tlsf.ts:289:36
(i32.const 1)
;;@ ~lib/allocator/tlsf.ts:289:41
(get_local $3)
)
(i32.const -1)
@ -412,7 +380,6 @@
(tee_local $4
(i32.add
(i32.add
;;@ ~lib/allocator/tlsf.ts:197:30
(get_local $1)
(i32.const 8)
)
@ -433,9 +400,7 @@
(block
;;@ ~lib/allocator/tlsf.ts:202:11
(call $~lib/allocator/tlsf/Root#remove
;;@ ~lib/allocator/tlsf.ts:202:6
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:202:18
(get_local $4)
)
;;@ ~lib/allocator/tlsf.ts:203:6
@ -444,13 +409,11 @@
;;@ ~lib/allocator/tlsf.ts:203:19
(tee_local $2
(i32.add
;;@ ~lib/allocator/tlsf.ts:203:20
(get_local $2)
;;@ ~lib/allocator/tlsf.ts:203:33
(i32.add
;;@ ~lib/allocator/tlsf.ts:203:46
(i32.and
;;@ ~lib/allocator/tlsf.ts:203:47
(get_local $5)
(i32.const -4)
)
@ -468,7 +431,6 @@
(tee_local $4
(i32.add
(i32.add
;;@ ~lib/allocator/tlsf.ts:204:14
(get_local $1)
(i32.const 8)
)
@ -502,7 +464,6 @@
(tee_local $1
(i32.load
(i32.sub
;;@ ~lib/allocator/tlsf.ts:211:31
(get_local $1)
(i32.const 4)
)
@ -512,9 +473,7 @@
)
;;@ ~lib/allocator/tlsf.ts:214:11
(call $~lib/allocator/tlsf/Root#remove
;;@ ~lib/allocator/tlsf.ts:214:6
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:214:18
(get_local $1)
)
;;@ ~lib/allocator/tlsf.ts:215:6
@ -523,13 +482,11 @@
;;@ ~lib/allocator/tlsf.ts:215:18
(tee_local $3
(i32.add
;;@ ~lib/allocator/tlsf.ts:215:19
(get_local $3)
;;@ ~lib/allocator/tlsf.ts:215:31
(i32.add
;;@ ~lib/allocator/tlsf.ts:215:44
(i32.and
;;@ ~lib/allocator/tlsf.ts:215:45
(get_local $2)
(i32.const -4)
)
@ -541,7 +498,6 @@
)
;;@ ~lib/allocator/tlsf.ts:217:6
(set_local $2
;;@ ~lib/allocator/tlsf.ts:217:18
(get_local $3)
)
)
@ -558,18 +514,14 @@
)
(i32.store
(i32.sub
;;@ ~lib/allocator/tlsf.ts:222:24
(get_local $4)
(i32.const 4)
)
;;@ ~lib/allocator/tlsf.ts:222:17
(get_local $1)
)
;;@ ~lib/allocator/tlsf.ts:240:4
(set_local $4
(i32.load offset=96
(i32.add
;;@ ~lib/allocator/tlsf.ts:240:15
(get_local $0)
(i32.shl
(i32.add
@ -590,22 +542,18 @@
;;@ ~lib/allocator/tlsf.ts:230:15
(i32.const 256)
)
;;@ ~lib/allocator/tlsf.ts:230:24
(block (result i32)
;;@ ~lib/allocator/tlsf.ts:232:6
(set_local $3
;;@ ~lib/allocator/tlsf.ts:232:11
(i32.div_u
;;@ ~lib/allocator/tlsf.ts:232:17
(get_local $3)
;;@ ~lib/allocator/tlsf.ts:232:24
(i32.const 8)
)
)
;;@ ~lib/allocator/tlsf.ts:231:11
(i32.const 0)
)
;;@ ~lib/allocator/tlsf.ts:233:11
(block (result i32)
;;@ ~lib/allocator/tlsf.ts:235:6
(set_local $3
@ -613,7 +561,6 @@
(i32.xor
;;@ ~lib/allocator/tlsf.ts:235:17
(i32.shr_u
;;@ ~lib/allocator/tlsf.ts:235:18
(get_local $3)
;;@ ~lib/allocator/tlsf.ts:235:26
(i32.sub
@ -622,7 +569,6 @@
(i32.sub
(i32.const 31)
(i32.clz
;;@ ~lib/allocator/tlsf.ts:234:22
(get_local $3)
)
)
@ -635,9 +581,7 @@
)
)
(i32.sub
;;@ ~lib/allocator/tlsf.ts:236:6
(get_local $2)
;;@ ~lib/allocator/tlsf.ts:236:12
(i32.const 7)
)
)
@ -645,7 +589,6 @@
)
(i32.const 5)
)
;;@ ~lib/allocator/tlsf.ts:240:32
(get_local $3)
)
(i32.const 2)
@ -662,38 +605,31 @@
;;@ ~lib/allocator/tlsf.ts:242:4
(i32.store offset=8
(get_local $1)
;;@ ~lib/allocator/tlsf.ts:242:17
(get_local $4)
)
;;@ ~lib/allocator/tlsf.ts:243:4
(if
;;@ ~lib/allocator/tlsf.ts:243:8
(get_local $4)
;;@ ~lib/allocator/tlsf.ts:243:14
(i32.store offset=4
(get_local $4)
;;@ ~lib/allocator/tlsf.ts:243:26
(get_local $1)
)
)
(i32.store offset=96
(i32.add
;;@ ~lib/allocator/tlsf.ts:244:4
(get_local $0)
(i32.shl
(i32.add
(i32.shl
;;@ ~lib/allocator/tlsf.ts:244:17
(get_local $2)
(i32.const 5)
)
;;@ ~lib/allocator/tlsf.ts:244:21
(get_local $3)
)
(i32.const 2)
)
)
;;@ ~lib/allocator/tlsf.ts:244:25
(get_local $1)
)
;;@ ~lib/allocator/tlsf.ts:247:4
@ -707,17 +643,14 @@
(i32.shl
;;@ ~lib/allocator/tlsf.ts:247:19
(i32.const 1)
;;@ ~lib/allocator/tlsf.ts:247:24
(get_local $2)
)
)
)
(i32.store offset=4
(i32.add
;;@ ~lib/allocator/tlsf.ts:248:4
(get_local $0)
(i32.shl
;;@ ~lib/allocator/tlsf.ts:248:18
(get_local $2)
(i32.const 2)
)
@ -728,7 +661,6 @@
(i32.add
(get_local $0)
(i32.shl
;;@ ~lib/allocator/tlsf.ts:248:36
(get_local $2)
(i32.const 2)
)
@ -738,7 +670,6 @@
(i32.shl
;;@ ~lib/allocator/tlsf.ts:248:43
(i32.const 1)
;;@ ~lib/allocator/tlsf.ts:248:48
(get_local $3)
)
)
@ -747,9 +678,8 @@
(func $~lib/allocator/tlsf/free_memory (; 4 ;) (type $iv) (param $0 i32)
(local $1 i32)
(local $2 i32)
;;@ ~lib/allocator/tlsf.ts:491:47
;;@ ~lib/allocator/tlsf.ts:492:2
(if
;;@ ~lib/allocator/tlsf.ts:492:6
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:494:4
(if
@ -760,39 +690,35 @@
)
;;@ ~lib/allocator/tlsf.ts:494:14
(block
;;@ ~lib/allocator/tlsf.ts:498:6
(i32.store
;;@ ~lib/allocator/tlsf.ts:495:6
(tee_local $2
;;@ ~lib/allocator/tlsf.ts:495:18
(i32.sub
;;@ ~lib/allocator/tlsf.ts:495:36
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:495:43
(i32.const 8)
;;@ ~lib/allocator/tlsf.ts:496:6
(set_local $2
;;@ ~lib/allocator/tlsf.ts:496:22
(i32.load
;;@ ~lib/allocator/tlsf.ts:495:6
(tee_local $0
;;@ ~lib/allocator/tlsf.ts:495:18
(i32.sub
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:495:43
(i32.const 8)
)
)
)
)
;;@ ~lib/allocator/tlsf.ts:498:6
(i32.store
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:498:19
(i32.or
;;@ ~lib/allocator/tlsf.ts:496:22
(i32.load
(get_local $2)
)
(get_local $2)
;;@ ~lib/allocator/tlsf.ts:498:31
(i32.const 1)
)
)
;;@ ~lib/allocator/tlsf.ts:499:11
(call $~lib/allocator/tlsf/Root#insert
;;@ ~lib/allocator/tlsf.ts:499:6
(get_local $1)
;;@ ~lib/allocator/tlsf.ts:499:18
(i32.sub
;;@ ~lib/allocator/tlsf.ts:499:36
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:499:43
(i32.const 8)
)
(get_local $0)
)
)
)
@ -801,20 +727,34 @@
(func $assembly/ugc/Control#step (; 5 ;) (type $iv) (param $0 i32)
(local $1 i32)
(local $2 i32)
;;@ assembly/ugc.ts:163:15
;;@ assembly/ugc.ts:165:4
(block $break|0
(block $case2|0
(block $case1|0
(block $case0|0
(block $tablify|0
(br_table $case0|0 $case1|0 $case2|0 $tablify|0
;;@ assembly/ugc.ts:165:12
(i32.load8_u offset=28
(get_local $0)
)
(if
(tee_local $1
;;@ assembly/ugc.ts:165:12
(i32.load8_u offset=28
(get_local $0)
)
)
(br $break|0)
(block
(br_if $case1|0
(i32.eq
(get_local $1)
;;@ assembly/ugc.ts:172:11
(i32.const 1)
)
)
(br_if $case2|0
(i32.eq
(get_local $1)
;;@ assembly/ugc.ts:194:11
(i32.const 2)
)
)
(br $break|0)
)
)
;;@ assembly/ugc.ts:169:8
(i32.store8 offset=28
@ -858,18 +798,15 @@
;;@ assembly/ugc.ts:177:10
(i32.store offset=24
(get_local $0)
;;@ assembly/ugc.ts:177:26
(get_local $1)
)
(i32.store
;;@ assembly/ugc.ts:178:10
(get_local $1)
(i32.or
(i32.load
(get_local $1)
)
(i32.xor
;;@ assembly/ugc.ts:178:22
(get_local $2)
;;@ assembly/ugc.ts:178:30
(i32.const 1)
@ -877,7 +814,6 @@
)
)
(if
;;@ assembly/ugc.ts:179:27
(get_local $1)
(drop
(i32.load offset=8
@ -924,7 +860,6 @@
;;@ assembly/ugc.ts:186:12
(i32.store offset=20
(get_local $0)
;;@ assembly/ugc.ts:186:22
(get_local $1)
)
;;@ assembly/ugc.ts:187:12
@ -942,7 +877,6 @@
(get_local $0)
;;@ assembly/ugc.ts:188:28
(i32.load
;;@ assembly/ugc.ts:188:53
(get_local $1)
)
)
@ -981,7 +915,6 @@
(get_local $0)
(i32.and
(i32.load
;;@ assembly/ugc.ts:197:26
(get_local $1)
)
(i32.const -4)
@ -990,7 +923,6 @@
(drop
(i32.load
(i32.add
;;@ assembly/ugc.ts:198:27
(get_local $1)
(i32.const 8)
)
@ -1092,23 +1024,20 @@
;;@ assembly/ugc.ts:268:2
(call $assembly/ugc/Control#set:paused
(get_global $assembly/ugc/GC)
;;@ assembly/ugc.ts:268:14
(get_local $1)
)
)
(func $assembly/ugc/gc_pause (; 7 ;) (type $v)
;;@ assembly/ugc.ts:254:33
;;@ assembly/ugc.ts:255:2
(call $assembly/ugc/Control#set:paused
;;@ assembly/ugc.ts:255:2
(get_global $assembly/ugc/GC)
;;@ assembly/ugc.ts:255:14
(i32.const 1)
)
)
(func $assembly/ugc/gc_resume (; 8 ;) (type $v)
;;@ assembly/ugc.ts:259:34
;;@ assembly/ugc.ts:260:2
(call $assembly/ugc/Control#set:paused
;;@ assembly/ugc.ts:260:2
(get_global $assembly/ugc/GC)
;;@ assembly/ugc.ts:260:14
(i32.const 0)

View File

@ -1,5 +1,4 @@
(module
(type $i (func (result i32)))
(type $iiiiv (func (param i32 i32 i32 i32)))
(type $ii (func (param i32) (result i32)))
(type $iv (func (param i32)))
@ -8,7 +7,7 @@
(type $iiii (func (param i32 i32 i32) (result i32)))
(type $iii (func (param i32 i32) (result i32)))
(type $iiiv (func (param i32 i32 i32)))
(import "env" "abort" (func $abort (param i32 i32 i32 i32)))
(import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32)))
(global $~lib/internal/allocator/AL_BITS i32 (i32.const 3))
(global $~lib/internal/allocator/AL_SIZE i32 (i32.const 8))
(global $~lib/internal/allocator/AL_MASK i32 (i32.const 7))
@ -27,19 +26,18 @@
(global $assembly/ugc/SWEEP i32 (i32.const 2))
(global $assembly/ugc/GRAY i32 (i32.const 2))
(global $assembly/ugc/GC (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 88))
(global $HEAP_BASE i32 (i32.const 92))
(memory $0 1)
(data (i32.const 4) "\16\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s\00")
(data (i32.const 52) "\0f\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00u\00g\00c\00.\00t\00s\00")
(data (i32.const 8) "\16\00\00\00~\00l\00i\00b\00/\00a\00l\00l\00o\00c\00a\00t\00o\00r\00/\00t\00l\00s\00f\00.\00t\00s\00")
(data (i32.const 56) "\0f\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00u\00g\00c\00.\00t\00s\00")
(export "gc_collect" (func $assembly/ugc/gc_collect))
(export "gc_pause" (func $assembly/ugc/gc_pause))
(export "gc_resume" (func $assembly/ugc/gc_resume))
(export "memory" (memory $0))
(start $start)
(func $assembly/ugc/ObjectHeader#set:next (; 1 ;) (type $iiv) (param $0 i32) (param $1 i32)
;;@ assembly/ugc.ts:32:32
;;@ assembly/ugc.ts:33:4
(i32.store
;;@ assembly/ugc.ts:33:4
(get_local $0)
;;@ assembly/ugc.ts:33:23
(i32.or
@ -57,9 +55,8 @@
)
)
(func $assembly/ugc/ObjectHeader#set:prev (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
;;@ assembly/ugc.ts:40:32
;;@ assembly/ugc.ts:41:4
(i32.store offset=4
;;@ assembly/ugc.ts:41:4
(get_local $0)
;;@ assembly/ugc.ts:41:23
(i32.or
@ -161,33 +158,28 @@
)
)
;;@ assembly/ugc.ts:121:11
(return
(get_local $1)
)
(get_local $1)
)
(func $assembly/ugc/Control#get:paused (; 5 ;) (type $ii) (param $0 i32) (result i32)
;;@ assembly/ugc.ts:99:21
(return
;;@ assembly/ugc.ts:99:67
(i32.ne
;;@ assembly/ugc.ts:99:30
(i32.ne
(i32.and
;;@ assembly/ugc.ts:99:31
(i32.load8_u offset=28
(get_local $0)
)
;;@ assembly/ugc.ts:99:44
(i32.const 128)
(i32.and
;;@ assembly/ugc.ts:99:31
(i32.load8_u offset=28
(get_local $0)
)
;;@ assembly/ugc.ts:99:67
(i32.const 0)
;;@ assembly/ugc.ts:99:44
(i32.const 128)
)
;;@ assembly/ugc.ts:99:67
(i32.const 0)
)
)
(func $assembly/ugc/Control#set:paused (; 6 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
;;@ assembly/ugc.ts:101:27
;;@ assembly/ugc.ts:102:4
(i32.store8 offset=28
;;@ assembly/ugc.ts:102:4
(get_local $0)
;;@ assembly/ugc.ts:102:17
(if (result i32)
@ -240,7 +232,7 @@
)
(func $assembly/ugc/gc_scan_fn (; 7 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32)
;;@ assembly/ugc.ts:274:73
;;@ assembly/ugc.ts:275:2
(if
;;@ assembly/ugc.ts:275:6
(i32.eqz
@ -260,20 +252,17 @@
)
)
(func $assembly/ugc/ObjectHeader#get:next (; 8 ;) (type $ii) (param $0 i32) (result i32)
;;@ assembly/ugc.ts:28:27
(return
;;@ assembly/ugc.ts:29:11
(i32.and
;;@ assembly/ugc.ts:29:36
(i32.load
(get_local $0)
)
;;@ assembly/ugc.ts:29:55
(i32.xor
;;@ assembly/ugc.ts:29:56
(i32.const 3)
(i32.const -1)
)
;;@ assembly/ugc.ts:29:57
(i32.and
;;@ assembly/ugc.ts:29:36
(i32.load
(get_local $0)
)
;;@ assembly/ugc.ts:29:55
(i32.xor
;;@ assembly/ugc.ts:29:56
(i32.const 3)
(i32.const -1)
)
)
)
@ -289,9 +278,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 52)
(i32.const 56)
(i32.const 49)
(i32.const 4)
)
@ -330,9 +319,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 89)
(i32.const 4)
)
@ -340,46 +329,43 @@
)
)
;;@ ~lib/allocator/tlsf.ts:94:4
(return
;;@ ~lib/allocator/tlsf.ts:90:11
(if (result i32)
(i32.eqz
(tee_local $1
;;@ ~lib/allocator/tlsf.ts:91:6
(if (result i32)
(i32.eqz
(tee_local $1
;;@ ~lib/allocator/tlsf.ts:91:6
(i32.add
;;@ ~lib/allocator/tlsf.ts:92:8
(i32.add
;;@ ~lib/allocator/tlsf.ts:92:8
(i32.add
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:92:34
(i32.const 8)
)
;;@ ~lib/allocator/tlsf.ts:92:47
(i32.and
;;@ ~lib/allocator/tlsf.ts:92:48
(i32.load
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:92:34
(i32.const 8)
)
;;@ ~lib/allocator/tlsf.ts:92:47
(i32.and
;;@ ~lib/allocator/tlsf.ts:92:48
(i32.load
(get_local $0)
)
;;@ ~lib/allocator/tlsf.ts:92:60
(i32.xor
;;@ ~lib/allocator/tlsf.ts:92:61
(i32.const 3)
(i32.const -1)
)
;;@ ~lib/allocator/tlsf.ts:92:60
(i32.xor
;;@ ~lib/allocator/tlsf.ts:92:61
(i32.const 3)
(i32.const -1)
)
)
)
)
(block
(call $abort
(i32.const 0)
(i32.const 4)
(i32.const 90)
(i32.const 11)
)
(unreachable)
)
(get_local $1)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 90)
(i32.const 11)
)
(unreachable)
)
(get_local $1)
)
)
(func $~lib/allocator/tlsf/fls<usize> (; 11 ;) (type $ii) (param $0 i32) (result i32)
@ -394,9 +380,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 428)
(i32.const 2)
)
@ -404,15 +390,13 @@
)
)
;;@ ~lib/allocator/tlsf.ts:430:26
(return
(i32.sub
;;@ ~lib/allocator/tlsf.ts:430:9
(i32.sub
(i32.const 31)
;;@ ~lib/allocator/tlsf.ts:430:15
(i32.clz
;;@ ~lib/allocator/tlsf.ts:430:22
(get_local $0)
)
(i32.const 31)
;;@ ~lib/allocator/tlsf.ts:430:15
(i32.clz
;;@ ~lib/allocator/tlsf.ts:430:22
(get_local $0)
)
)
)
@ -428,9 +412,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 158)
(i32.const 4)
)
@ -448,9 +432,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 159)
(i32.const 4)
)
@ -458,27 +442,24 @@
)
)
;;@ ~lib/allocator/tlsf.ts:162:20
(return
;;@ ~lib/allocator/tlsf.ts:160:11
(i32.load offset=96
;;@ ~lib/allocator/tlsf.ts:161:6
(i32.add
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:161:32
(i32.mul
(i32.add
;;@ ~lib/allocator/tlsf.ts:161:33
(i32.mul
(get_local $1)
;;@ ~lib/allocator/tlsf.ts:161:38
(i32.const 32)
)
;;@ ~lib/allocator/tlsf.ts:161:48
(get_local $2)
(i32.load offset=96
;;@ ~lib/allocator/tlsf.ts:161:6
(i32.add
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:161:32
(i32.mul
(i32.add
;;@ ~lib/allocator/tlsf.ts:161:33
(i32.mul
(get_local $1)
;;@ ~lib/allocator/tlsf.ts:161:38
(i32.const 32)
)
;;@ ~lib/allocator/tlsf.ts:161:61
(i32.const 4)
;;@ ~lib/allocator/tlsf.ts:161:48
(get_local $2)
)
;;@ ~lib/allocator/tlsf.ts:161:61
(i32.const 4)
)
)
)
@ -495,9 +476,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 167)
(i32.const 4)
)
@ -515,9 +496,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 168)
(i32.const 4)
)
@ -561,9 +542,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 138)
(i32.const 4)
)
@ -571,18 +552,15 @@
)
)
;;@ ~lib/allocator/tlsf.ts:139:68
(return
;;@ ~lib/allocator/tlsf.ts:139:11
(i32.load offset=4
;;@ ~lib/allocator/tlsf.ts:139:21
(i32.add
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:139:47
(i32.mul
(get_local $1)
;;@ ~lib/allocator/tlsf.ts:139:52
(i32.const 4)
)
(i32.load offset=4
;;@ ~lib/allocator/tlsf.ts:139:21
(i32.add
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:139:47
(i32.mul
(get_local $1)
;;@ ~lib/allocator/tlsf.ts:139:52
(i32.const 4)
)
)
)
@ -599,9 +577,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 144)
(i32.const 4)
)
@ -650,9 +628,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 258)
(i32.const 4)
)
@ -694,9 +672,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 260)
(i32.const 4)
)
@ -933,9 +911,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 81)
(i32.const 4)
)
@ -943,33 +921,30 @@
)
)
;;@ ~lib/allocator/tlsf.ts:84:4
(return
;;@ ~lib/allocator/tlsf.ts:82:11
(if (result i32)
(i32.eqz
(tee_local $1
;;@ ~lib/allocator/tlsf.ts:83:6
(i32.load
;;@ ~lib/allocator/tlsf.ts:83:18
(i32.sub
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:83:44
(i32.const 4)
)
(if (result i32)
(i32.eqz
(tee_local $1
;;@ ~lib/allocator/tlsf.ts:83:6
(i32.load
;;@ ~lib/allocator/tlsf.ts:83:18
(i32.sub
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:83:44
(i32.const 4)
)
)
)
(block
(call $abort
(i32.const 0)
(i32.const 4)
(i32.const 82)
(i32.const 11)
)
(unreachable)
)
(get_local $1)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 82)
(i32.const 11)
)
(unreachable)
)
(get_local $1)
)
)
(func $~lib/allocator/tlsf/Root#setJump (; 18 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
@ -986,9 +961,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 334)
(i32.const 4)
)
@ -1008,9 +983,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 335)
(i32.const 4)
)
@ -1030,9 +1005,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 336)
(i32.const 4)
)
@ -1061,7 +1036,6 @@
(local $8 i32)
(local $9 i32)
(local $10 i32)
(local $11 i32)
;;@ ~lib/allocator/tlsf.ts:189:4
(if
(i32.eqz
@ -1069,9 +1043,9 @@
(get_local $1)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 189)
(i32.const 4)
)
@ -1096,9 +1070,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 191)
(i32.const 4)
)
@ -1140,9 +1114,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 193)
(i32.const 4)
)
@ -1162,9 +1136,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 197)
(i32.const 23)
)
@ -1262,9 +1236,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 211)
(i32.const 24)
)
@ -1291,9 +1265,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 213)
(i32.const 6)
)
@ -1382,7 +1356,7 @@
(i32.eqz
;;@ ~lib/allocator/tlsf.ts:226:11
(if (result i32)
(tee_local $8
(tee_local $7
(i32.ge_u
(get_local $3)
;;@ ~lib/allocator/tlsf.ts:226:19
@ -1395,13 +1369,13 @@
;;@ ~lib/allocator/tlsf.ts:226:44
(i32.const 1073741824)
)
(get_local $8)
(get_local $7)
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 226)
(i32.const 4)
)
@ -1419,12 +1393,12 @@
;;@ ~lib/allocator/tlsf.ts:230:24
(block
;;@ ~lib/allocator/tlsf.ts:231:6
(set_local $9
(set_local $8
;;@ ~lib/allocator/tlsf.ts:231:11
(i32.const 0)
)
;;@ ~lib/allocator/tlsf.ts:232:6
(set_local $10
(set_local $9
;;@ ~lib/allocator/tlsf.ts:232:11
(i32.div_u
;;@ ~lib/allocator/tlsf.ts:232:17
@ -1437,7 +1411,7 @@
;;@ ~lib/allocator/tlsf.ts:233:11
(block
;;@ ~lib/allocator/tlsf.ts:234:6
(set_local $9
(set_local $8
;;@ ~lib/allocator/tlsf.ts:234:11
(call $~lib/allocator/tlsf/fls<usize>
;;@ ~lib/allocator/tlsf.ts:234:22
@ -1445,7 +1419,7 @@
)
)
;;@ ~lib/allocator/tlsf.ts:235:6
(set_local $10
(set_local $9
;;@ ~lib/allocator/tlsf.ts:235:11
(i32.xor
;;@ ~lib/allocator/tlsf.ts:235:17
@ -1455,7 +1429,7 @@
;;@ ~lib/allocator/tlsf.ts:235:26
(i32.sub
;;@ ~lib/allocator/tlsf.ts:235:27
(get_local $9)
(get_local $8)
;;@ ~lib/allocator/tlsf.ts:235:32
(i32.const 5)
)
@ -1470,9 +1444,9 @@
)
)
;;@ ~lib/allocator/tlsf.ts:236:6
(set_local $9
(set_local $8
(i32.sub
(get_local $9)
(get_local $8)
;;@ ~lib/allocator/tlsf.ts:236:12
(i32.sub
(i32.const 8)
@ -1484,15 +1458,15 @@
)
)
;;@ ~lib/allocator/tlsf.ts:240:4
(set_local $11
(set_local $10
;;@ ~lib/allocator/tlsf.ts:240:20
(call $~lib/allocator/tlsf/Root#getHead
;;@ ~lib/allocator/tlsf.ts:240:15
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:240:28
(get_local $9)
(get_local $8)
;;@ ~lib/allocator/tlsf.ts:240:32
(get_local $10)
(get_local $9)
)
)
;;@ ~lib/allocator/tlsf.ts:241:4
@ -1505,15 +1479,15 @@
(i32.store offset=8
(get_local $1)
;;@ ~lib/allocator/tlsf.ts:242:17
(get_local $11)
(get_local $10)
)
;;@ ~lib/allocator/tlsf.ts:243:4
(if
;;@ ~lib/allocator/tlsf.ts:243:8
(get_local $11)
(get_local $10)
;;@ ~lib/allocator/tlsf.ts:243:14
(i32.store offset=4
(get_local $11)
(get_local $10)
;;@ ~lib/allocator/tlsf.ts:243:26
(get_local $1)
)
@ -1523,9 +1497,9 @@
;;@ ~lib/allocator/tlsf.ts:244:4
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:244:17
(get_local $9)
(get_local $8)
;;@ ~lib/allocator/tlsf.ts:244:21
(get_local $10)
(get_local $9)
;;@ ~lib/allocator/tlsf.ts:244:25
(get_local $1)
)
@ -1541,7 +1515,7 @@
;;@ ~lib/allocator/tlsf.ts:247:19
(i32.const 1)
;;@ ~lib/allocator/tlsf.ts:247:24
(get_local $9)
(get_local $8)
)
)
)
@ -1550,7 +1524,7 @@
;;@ ~lib/allocator/tlsf.ts:248:4
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:248:18
(get_local $9)
(get_local $8)
;;@ ~lib/allocator/tlsf.ts:248:22
(i32.or
;;@ ~lib/allocator/tlsf.ts:248:27
@ -1558,14 +1532,14 @@
;;@ ~lib/allocator/tlsf.ts:248:22
(get_local $0)
;;@ ~lib/allocator/tlsf.ts:248:36
(get_local $9)
(get_local $8)
)
;;@ ~lib/allocator/tlsf.ts:248:42
(i32.shl
;;@ ~lib/allocator/tlsf.ts:248:43
(i32.const 1)
;;@ ~lib/allocator/tlsf.ts:248:48
(get_local $10)
(get_local $9)
)
)
)
@ -1574,7 +1548,7 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
;;@ ~lib/allocator/tlsf.ts:491:47
;;@ ~lib/allocator/tlsf.ts:492:2
(if
;;@ ~lib/allocator/tlsf.ts:492:6
(get_local $0)
@ -1623,9 +1597,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 497)
(i32.const 6)
)
@ -1684,7 +1658,7 @@
(local $2 i32)
(local $3 i32)
(local $4 i32)
;;@ assembly/ugc.ts:163:15
;;@ assembly/ugc.ts:165:4
(block $break|0
(block $case2|0
(block $case1|0
@ -1997,18 +1971,16 @@
)
)
(func $assembly/ugc/gc_pause (; 25 ;) (type $v)
;;@ assembly/ugc.ts:254:33
;;@ assembly/ugc.ts:255:2
(call $assembly/ugc/Control#set:paused
;;@ assembly/ugc.ts:255:2
(get_global $assembly/ugc/GC)
;;@ assembly/ugc.ts:255:14
(i32.const 1)
)
)
(func $assembly/ugc/gc_resume (; 26 ;) (type $v)
;;@ assembly/ugc.ts:259:34
;;@ assembly/ugc.ts:260:2
(call $assembly/ugc/Control#set:paused
;;@ assembly/ugc.ts:260:2
(get_global $assembly/ugc/GC)
;;@ assembly/ugc.ts:260:14
(i32.const 0)
@ -2031,9 +2003,9 @@
)
)
(block
(call $abort
(call $~lib/env/abort
(i32.const 0)
(i32.const 4)
(i32.const 8)
(i32.const 122)
(i32.const 0)
)