move stuff, run both untouched and optimized

This commit is contained in:
dcode
2019-05-21 15:02:39 +02:00
parent 7128d190a5
commit c92643832c
49 changed files with 34520 additions and 43738 deletions

View File

@ -3,9 +3,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00d\00o\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(data (i32.const 8) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00d\00o\00.\00t\00s")
(global $do/n (mut i32) (i32.const 10))
(global $do/m (mut i32) (i32.const 0))
(global $do/o (mut i32) (i32.const 0))
@ -13,26 +11,19 @@
(start $start)
(func $start:do (; 1 ;) (type $FUNCSIG$v)
(local $0 i32)
block $break|0
loop $continue|0
block
global.get $do/n
i32.const 1
i32.sub
global.set $do/n
global.get $do/m
i32.const 1
i32.add
global.set $do/m
end
global.get $do/n
br_if $continue|0
end
loop $continue|0
global.get $do/n
i32.const 1
i32.sub
global.set $do/n
global.get $do/m
i32.const 1
i32.add
global.set $do/m
global.get $do/n
br_if $continue|0
end
global.get $do/n
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
@ -43,8 +34,7 @@
end
global.get $do/m
i32.const 10
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -55,24 +45,18 @@
end
i32.const 10
global.set $do/n
block $break|1
loop $continue|1
nop
block (result i32)
global.get $do/n
local.tee $0
i32.const 1
i32.sub
global.set $do/n
local.get $0
end
br_if $continue|1
end
loop $continue|1
global.get $do/n
local.tee $0
i32.const 1
i32.sub
global.set $do/n
local.get $0
br_if $continue|1
end
global.get $do/n
i32.const -1
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -85,66 +69,51 @@
global.set $do/n
i32.const 0
global.set $do/m
block $break|2
loop $continue|2
block
global.get $do/n
i32.const 1
i32.sub
global.set $do/n
global.get $do/m
i32.const 1
i32.add
global.set $do/m
block $break|3
loop $continue|3
block
global.get $do/n
i32.const 1
i32.sub
global.set $do/n
global.get $do/o
i32.const 1
i32.add
global.set $do/o
end
global.get $do/n
br_if $continue|3
end
end
global.get $do/n
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 24
i32.const 2
call $~lib/builtins/abort
unreachable
end
global.get $do/o
i32.const 9
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 25
i32.const 2
call $~lib/builtins/abort
unreachable
end
end
loop $continue|2
global.get $do/n
i32.const 1
i32.sub
global.set $do/n
global.get $do/m
i32.const 1
i32.add
global.set $do/m
loop $continue|3
global.get $do/n
br_if $continue|2
i32.const 1
i32.sub
global.set $do/n
global.get $do/o
i32.const 1
i32.add
global.set $do/o
global.get $do/n
br_if $continue|3
end
global.get $do/n
if
i32.const 0
i32.const 24
i32.const 24
i32.const 2
call $~lib/builtins/abort
unreachable
end
global.get $do/o
i32.const 9
i32.ne
if
i32.const 0
i32.const 24
i32.const 25
i32.const 2
call $~lib/builtins/abort
unreachable
end
global.get $do/n
br_if $continue|2
end
global.get $do/n
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
@ -155,8 +124,7 @@
end
global.get $do/m
i32.const 1
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -167,8 +135,7 @@
end
global.get $do/o
i32.const 9
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -182,5 +149,6 @@
call $start:do
)
(func $null (; 3 ;) (type $FUNCSIG$v)
nop
)
)

View File

@ -1,9 +1,8 @@
(module
(type $FUNCSIG$v (func))
(memory $0 0)
(table $0 1 funcref)
(elem (i32.const 0) $null)
(export "memory" (memory $0))
(func $null (; 0 ;) (type $FUNCSIG$v)
nop
)
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,472 +7,135 @@
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00e\00r\00r\00o\00r\00")
(data (i32.const 40) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s\00")
(data (i32.const 8) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00e\00r\00r\00o\00r")
(data (i32.const 40) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00r\00e\00t\00a\00i\00n\00-\00r\00e\00l\00e\00a\00s\00e\00.\00t\00s")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(elem (i32.const 0) $retain-release/receiveRef)
(global $retain-release/REF (mut i32) (i32.const 0))
(global $retain-release/glo (mut i32) (i32.const 0))
(global $retain-release/TARGET (mut i32) (i32.const 0))
(global $~lib/argc (mut i32) (i32.const 0))
(global $~lib/rt/stub/startOffset (mut i32) (i32.const 0))
(global $~lib/rt/stub/offset (mut i32) (i32.const 0))
(global $~lib/builtins/HEAP_BASE i32 (i32.const 92))
(export "memory" (memory $0))
(export "returnRef" (func $retain-release/returnRef))
(export "receiveRef" (func $retain-release/receiveRef))
(export "receiveRefDrop" (func $retain-release/receiveRefDrop))
(export "receiveRefRetain" (func $retain-release/receiveRefRetain))
(export "receiveRefDrop" (func $retain-release/receiveRef))
(export "receiveRefRetain" (func $retain-release/receiveRef))
(export "takeRef" (func $retain-release/takeRef))
(export "provideRef" (func $retain-release/provideRef))
(export "provideRef" (func $retain-release/receiveRef))
(export "takeReturnRef" (func $retain-release/takeReturnRef))
(export "provideReceiveRef" (func $retain-release/provideReceiveRef))
(export "provideReceiveRef" (func $retain-release/receiveRef))
(export "newRef" (func $retain-release/newRef))
(export "assignGlobal" (func $retain-release/assignGlobal))
(export "assignField" (func $retain-release/assignField))
(export "scopeBlock" (func $retain-release/scopeBlock))
(export "scopeBlockToUninitialized" (func $retain-release/scopeBlockToUninitialized))
(export "scopeBlockToInitialized" (func $retain-release/scopeBlockToInitialized))
(export "scopeBlockToConditional" (func $retain-release/scopeBlockToConditional))
(export "scopeTopLevelUninitialized" (func $retain-release/scopeTopLevelUninitialized))
(export "scopeTopLevelInitialized" (func $retain-release/scopeTopLevelInitialized))
(export "scopeTopLevelConditional" (func $retain-release/scopeTopLevelConditional))
(export "scopeIf" (func $retain-release/scopeIf))
(export "scopeIfElse" (func $retain-release/scopeIfElse))
(export "scopeWhile" (func $retain-release/scopeWhile))
(export "scopeDo" (func $retain-release/scopeDo))
(export "scopeFor" (func $retain-release/scopeFor))
(export "scopeBreak" (func $retain-release/scopeBreak))
(export "scopeContinue" (func $retain-release/scopeContinue))
(export "scopeBlock" (func $retain-release/receiveRef))
(export "scopeBlockToUninitialized" (func $retain-release/receiveRef))
(export "scopeBlockToInitialized" (func $retain-release/receiveRef))
(export "scopeBlockToConditional" (func $retain-release/takeRef))
(export "scopeTopLevelUninitialized" (func $retain-release/receiveRef))
(export "scopeTopLevelInitialized" (func $retain-release/receiveRef))
(export "scopeTopLevelConditional" (func $retain-release/takeRef))
(export "scopeIf" (func $retain-release/takeRef))
(export "scopeIfElse" (func $retain-release/takeRef))
(export "scopeWhile" (func $retain-release/takeRef))
(export "scopeDo" (func $retain-release/takeRef))
(export "scopeFor" (func $retain-release/takeRef))
(export "scopeBreak" (func $retain-release/takeRef))
(export "scopeContinue" (func $retain-release/takeRef))
(export "scopeThrow" (func $retain-release/scopeThrow))
(export "scopeUnreachable" (func $retain-release/scopeUnreachable))
(export "callInline" (func $retain-release/callInline))
(export "provideRefInline" (func $retain-release/provideRefInline))
(export "receiveRefInline" (func $retain-release/receiveRefInline))
(export "receiveRefInlineDrop" (func $retain-release/receiveRefInlineDrop))
(export "callInline" (func $retain-release/receiveRef))
(export "provideRefInline" (func $retain-release/receiveRef))
(export "receiveRefInline" (func $retain-release/receiveRef))
(export "receiveRefInlineDrop" (func $retain-release/receiveRef))
(export "provideRefIndirect" (func $retain-release/provideRefIndirect))
(export "receiveRefIndirect" (func $retain-release/receiveRefIndirect))
(export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirectDrop))
(export "receiveRefIndirectDrop" (func $retain-release/receiveRefIndirect))
(start $start)
(func $retain-release/Ref#constructor (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 0
i32.const 17
call $~lib/rt/stub/__alloc
call $~lib/rt/stub/__retain
local.set $0
end
(func $retain-release/Ref#constructor (; 1 ;) (type $FUNCSIG$i) (result i32)
i32.const 0
i32.const 17
call $~lib/rt/stub/__alloc
)
(func $retain-release/returnRef (; 2 ;) (type $FUNCSIG$i) (result i32)
global.get $retain-release/REF
)
(func $retain-release/receiveRef (; 3 ;) (type $FUNCSIG$v)
nop
)
(func $retain-release/takeRef (; 4 ;) (type $FUNCSIG$vi) (param $0 i32)
nop
)
(func $retain-release/takeReturnRef (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
)
(func $retain-release/Target#constructor (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if
i32.const 4
i32.const 18
call $~lib/rt/stub/__alloc
call $~lib/rt/stub/__retain
local.set $0
end
local.get $0
i32.const 0
i32.store
local.get $0
)
(func $start:retain-release (; 3 ;) (type $FUNCSIG$v)
i32.const 0
(func $retain-release/newRef (; 6 ;) (type $FUNCSIG$v)
call $retain-release/Ref#constructor
global.set $retain-release/REF
i32.const 0
call $retain-release/Target#constructor
global.set $retain-release/TARGET
)
(func $retain-release/returnRef (; 4 ;) (type $FUNCSIG$i) (result i32)
global.get $retain-release/REF
call $~lib/rt/stub/__retain
)
(func $retain-release/receiveRef (; 5 ;) (type $FUNCSIG$v)
(local $0 i32)
call $retain-release/returnRef
local.tee $0
i32.eqz
drop
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/receiveRefDrop (; 6 ;) (type $FUNCSIG$v)
call $retain-release/returnRef
call $~lib/rt/stub/__release
)
(func $retain-release/receiveRefRetain (; 7 ;) (type $FUNCSIG$v)
(local $0 i32)
call $retain-release/returnRef
local.set $0
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/takeRef (; 8 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
call $~lib/rt/stub/__retain
drop
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/provideRef (; 9 ;) (type $FUNCSIG$v)
(func $retain-release/assignGlobal (; 7 ;) (type $FUNCSIG$v)
global.get $retain-release/REF
call $retain-release/takeRef
)
(func $retain-release/takeReturnRef (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
call $~lib/rt/stub/__retain
drop
local.get $0
)
(func $retain-release/provideReceiveRef (; 11 ;) (type $FUNCSIG$v)
(local $0 i32)
global.get $retain-release/REF
call $retain-release/takeReturnRef
local.tee $0
i32.eqz
drop
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/newRef (; 12 ;) (type $FUNCSIG$v)
i32.const 0
call $retain-release/Ref#constructor
call $~lib/rt/stub/__release
)
(func $retain-release/assignGlobal (; 13 ;) (type $FUNCSIG$v)
global.get $retain-release/REF
global.get $retain-release/glo
call $~lib/rt/stub/__retainRelease
global.set $retain-release/glo
)
(func $retain-release/assignField (; 14 ;) (type $FUNCSIG$v)
(func $retain-release/assignField (; 8 ;) (type $FUNCSIG$v)
(local $0 i32)
global.get $retain-release/TARGET
local.tee $0
global.get $retain-release/REF
local.get $0
i32.load
call $~lib/rt/stub/__retainRelease
drop
local.get $0
global.get $retain-release/REF
i32.store
)
(func $retain-release/scopeBlock (; 15 ;) (type $FUNCSIG$v)
(local $0 i32)
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $0
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/scopeBlockToUninitialized (; 16 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
i32.const 0
local.set $0
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
local.get $0
call $~lib/rt/stub/__retainRelease
local.set $0
local.get $1
call $~lib/rt/stub/__release
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/scopeBlockToInitialized (; 17 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $0
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
local.get $0
call $~lib/rt/stub/__retainRelease
local.set $0
local.get $1
call $~lib/rt/stub/__release
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/scopeBlockToConditional (; 18 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
(local $2 i32)
i32.const 0
local.set $1
(func $retain-release/scopeThrow (; 9 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
if
global.get $retain-release/REF
local.get $1
call $~lib/rt/stub/__retainRelease
local.set $1
end
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $2
local.get $2
local.get $1
call $~lib/rt/stub/__retainRelease
local.set $1
local.get $2
call $~lib/rt/stub/__release
local.get $1
call $~lib/rt/stub/__release
)
(func $retain-release/scopeTopLevelUninitialized (; 19 ;) (type $FUNCSIG$v)
(local $0 i32)
i32.const 0
local.set $0
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/scopeTopLevelInitialized (; 20 ;) (type $FUNCSIG$v)
(local $0 i32)
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $0
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/scopeTopLevelConditional (; 21 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
i32.const 0
local.set $1
local.get $0
if
global.get $retain-release/REF
local.get $1
call $~lib/rt/stub/__retainRelease
local.set $1
end
local.get $1
call $~lib/rt/stub/__release
)
(func $retain-release/scopeIf (; 22 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
if
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
call $~lib/rt/stub/__release
end
)
(func $retain-release/scopeIfElse (; 23 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
local.get $0
if
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
call $~lib/rt/stub/__release
else
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
call $~lib/rt/stub/__release
end
)
(func $retain-release/scopeWhile (; 24 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
loop $continue|0
local.get $0
if
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
call $~lib/rt/stub/__release
br $continue|0
end
end
)
(func $retain-release/scopeDo (; 25 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
loop $continue|0
block
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
call $~lib/rt/stub/__release
end
local.get $0
br_if $continue|0
end
)
(func $retain-release/scopeFor (; 26 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
block $break|0
loop $repeat|0
local.get $0
i32.eqz
br_if $break|0
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
call $~lib/rt/stub/__release
br $repeat|0
unreachable
end
i32.const 24
i32.const 56
i32.const 313
i32.const 4
call $~lib/builtins/abort
unreachable
end
)
(func $retain-release/scopeBreak (; 27 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
block $break|0
loop $continue|0
local.get $0
if
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
call $~lib/rt/stub/__release
br $break|0
end
end
end
)
(func $retain-release/scopeContinue (; 28 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
loop $continue|0
local.get $0
if
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
call $~lib/rt/stub/__release
br $continue|0
end
end
)
(func $retain-release/scopeThrow (; 29 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
loop $continue|0
local.get $0
if
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
local.get $1
call $~lib/rt/stub/__release
block
i32.const 24
i32.const 56
i32.const 310
i32.const 4
call $~lib/builtins/abort
unreachable
unreachable
end
unreachable
end
end
)
(func $retain-release/scopeUnreachable (; 30 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
loop $continue|0
local.get $0
if
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $1
unreachable
local.get $1
call $~lib/rt/stub/__release
br $continue|0
end
end
)
(func $retain-release/callInline (; 31 ;) (type $FUNCSIG$v)
(local $0 i32)
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $0
(func $retain-release/scopeUnreachable (; 10 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/provideRefInline (; 32 ;) (type $FUNCSIG$v)
(local $0 i32)
global.get $retain-release/REF
call $~lib/rt/stub/__retain
local.set $0
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/receiveRefInline (; 33 ;) (type $FUNCSIG$v)
(local $0 i32)
block $retain-release/returnRefInline|inlined.0 (result i32)
global.get $retain-release/REF
call $~lib/rt/stub/__retain
if
unreachable
end
local.tee $0
i32.eqz
drop
local.get $0
call $~lib/rt/stub/__release
)
(func $retain-release/receiveRefInlineDrop (; 34 ;) (type $FUNCSIG$v)
block $retain-release/returnRefInline|inlined.1 (result i32)
global.get $retain-release/REF
call $~lib/rt/stub/__retain
end
call $~lib/rt/stub/__release
)
(func $retain-release/provideRefIndirect (; 35 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $retain-release/provideRefIndirect (; 11 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 1
global.set $~lib/argc
global.get $retain-release/REF
local.get $0
call_indirect (type $FUNCSIG$vi)
)
(func $retain-release/receiveRefIndirect (; 36 ;) (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
block (result i32)
i32.const 0
global.set $~lib/argc
local.get $0
call_indirect (type $FUNCSIG$i)
local.tee $1
end
i32.eqz
drop
local.get $1
call $~lib/rt/stub/__release
)
(func $retain-release/receiveRefIndirectDrop (; 37 ;) (type $FUNCSIG$vi) (param $0 i32)
(func $retain-release/receiveRefIndirect (; 12 ;) (type $FUNCSIG$vi) (param $0 i32)
i32.const 0
global.set $~lib/argc
local.get $0
call_indirect (type $FUNCSIG$i)
call $~lib/rt/stub/__release
drop
)
(func $start (; 38 ;) (type $FUNCSIG$v)
call $start:retain-release
(func $start (; 13 ;) (type $FUNCSIG$v)
(local $0 i32)
call $retain-release/Ref#constructor
global.set $retain-release/REF
i32.const 4
i32.const 18
call $~lib/rt/stub/__alloc
local.tee $0
i32.const 0
i32.store
local.get $0
global.set $retain-release/TARGET
)
(func $~lib/rt/stub/__alloc (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/rt/stub/__alloc (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
local.get $0
i32.const 1073741808
i32.gt_u
@ -482,59 +145,45 @@
global.get $~lib/rt/stub/offset
i32.const 16
i32.add
local.set $2
local.get $2
local.get $0
local.tee $3
local.get $0
i32.const 1
local.get $0
i32.const 1
local.tee $4
local.get $3
local.get $4
i32.gt_u
select
i32.add
i32.const 15
i32.add
i32.const 15
i32.const -1
i32.xor
i32.const -16
i32.and
local.set $5
local.tee $2
current_memory
local.set $6
local.get $5
local.get $6
local.tee $4
i32.const 16
i32.shl
i32.gt_u
if
local.get $5
local.get $4
local.get $2
local.get $3
i32.sub
i32.const 65535
i32.add
i32.const 65535
i32.const -1
i32.xor
i32.const -65536
i32.and
i32.const 16
i32.shr_u
local.set $3
local.get $6
local.tee $4
local.get $3
local.tee $7
local.tee $5
local.get $4
local.get $7
local.get $5
i32.gt_s
select
local.set $4
local.get $4
grow_memory
i32.const 0
i32.lt_s
if
local.get $3
local.get $5
grow_memory
i32.const 0
i32.lt_s
@ -543,29 +192,17 @@
end
end
end
local.get $5
global.set $~lib/rt/stub/offset
local.get $2
global.set $~lib/rt/stub/offset
local.get $3
i32.const 16
i32.sub
local.set $8
local.get $8
local.tee $2
local.get $1
i32.store offset=8
local.get $8
local.get $2
local.get $0
i32.store offset=12
local.get $2
)
(func $~lib/rt/stub/__retain (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
)
(func $~lib/rt/stub/__retainRelease (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
)
(func $~lib/rt/stub/__release (; 42 ;) (type $FUNCSIG$vi) (param $0 i32)
nop
)
(func $null (; 43 ;) (type $FUNCSIG$v)
local.get $3
)
)

View File

@ -17,7 +17,7 @@
(global $~lib/argc (mut i32) (i32.const 0))
(global $~lib/rt/stub/startOffset (mut i32) (i32.const 0))
(global $~lib/rt/stub/offset (mut i32) (i32.const 0))
(global $~lib/builtins/HEAP_BASE i32 (i32.const 92))
(global $~lib/heap/HEAP_BASE i32 (i32.const 92))
(export "memory" (memory $0))
(export "returnRef" (func $retain-release/returnRef))
(export "receiveRef" (func $retain-release/receiveRef))
@ -374,7 +374,7 @@
block
i32.const 24
i32.const 56
i32.const 310
i32.const 313
i32.const 4
call $~lib/builtins/abort
unreachable

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,388 +1,25 @@
(module
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00")
(data (i32.const 64) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00")
(data (i32.const 120) "\10\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/rt/stub/startOffset (mut i32) (i32.const 0))
(global $~lib/rt/stub/offset (mut i32) (i32.const 0))
(global $~lib/builtins/RTTI_BASE i32 (i32.const 120))
(global $~lib/builtins/HEAP_BASE i32 (i32.const 256))
(data (i32.const 8) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e")
(data (i32.const 64) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s")
(data (i32.const 104) "\10\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08")
(export "memory" (memory $0))
(export "__alloc" (func $~lib/rt/stub/__alloc))
(export "__realloc" (func $~lib/rt/stub/__realloc))
(export "__free" (func $~lib/rt/stub/__free))
(export "__retain" (func $~lib/rt/stub/__retain))
(export "__release" (func $~lib/rt/stub/__release))
(export "__collect" (func $~lib/rt/stub/__collect))
(export "__instanceof" (func $~lib/rt/common/__instanceof))
(export "__typeinfo" (func $~lib/rt/common/__typeinfo))
(start $start)
(func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
local.get $0
i32.const 1073741808
i32.gt_u
if
unreachable
end
global.get $~lib/rt/stub/offset
i32.const 16
i32.add
local.set $2
local.get $2
local.get $0
local.tee $3
i32.const 1
local.tee $4
local.get $3
local.get $4
i32.gt_u
select
i32.add
i32.const 15
i32.add
i32.const 15
i32.const -1
i32.xor
i32.and
local.set $5
current_memory
local.set $6
local.get $5
local.get $6
i32.const 16
i32.shl
i32.gt_u
if
local.get $5
local.get $2
i32.sub
i32.const 65535
i32.add
i32.const 65535
i32.const -1
i32.xor
i32.and
i32.const 16
i32.shr_u
local.set $3
local.get $6
local.tee $4
local.get $3
local.tee $7
local.get $4
local.get $7
i32.gt_s
select
local.set $4
local.get $4
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 $5
global.set $~lib/rt/stub/offset
local.get $2
i32.const 16
i32.sub
local.set $8
local.get $8
local.get $1
i32.store offset=8
local.get $8
local.get $0
i32.store offset=12
local.get $2
)
(func $~lib/memory/memory.copy (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
block $~lib/util/memory/memmove|inlined.0
local.get $0
local.set $5
local.get $1
local.set $4
local.get $2
local.set $3
local.get $5
local.get $4
i32.eq
if
br $~lib/util/memory/memmove|inlined.0
end
local.get $5
local.get $4
i32.lt_u
if
local.get $4
i32.const 7
i32.and
local.get $5
i32.const 7
i32.and
i32.eq
if
block $break|0
loop $continue|0
local.get $5
i32.const 7
i32.and
if
local.get $3
i32.eqz
if
br $~lib/util/memory/memmove|inlined.0
end
local.get $3
i32.const 1
i32.sub
local.set $3
block (result i32)
local.get $5
local.tee $6
i32.const 1
i32.add
local.set $5
local.get $6
end
block (result i32)
local.get $4
local.tee $6
i32.const 1
i32.add
local.set $4
local.get $6
end
i32.load8_u
i32.store8
br $continue|0
end
end
end
block $break|1
loop $continue|1
local.get $3
i32.const 8
i32.ge_u
if
local.get $5
local.get $4
i64.load
i64.store
local.get $3
i32.const 8
i32.sub
local.set $3
local.get $5
i32.const 8
i32.add
local.set $5
local.get $4
i32.const 8
i32.add
local.set $4
br $continue|1
end
end
end
end
block $break|2
loop $continue|2
local.get $3
if
block (result i32)
local.get $5
local.tee $6
i32.const 1
i32.add
local.set $5
local.get $6
end
block (result i32)
local.get $4
local.tee $6
i32.const 1
i32.add
local.set $4
local.get $6
end
i32.load8_u
i32.store8
local.get $3
i32.const 1
i32.sub
local.set $3
br $continue|2
end
end
end
else
local.get $4
i32.const 7
i32.and
local.get $5
i32.const 7
i32.and
i32.eq
if
block $break|3
loop $continue|3
local.get $5
local.get $3
i32.add
i32.const 7
i32.and
if
local.get $3
i32.eqz
if
br $~lib/util/memory/memmove|inlined.0
end
local.get $5
local.get $3
i32.const 1
i32.sub
local.tee $3
i32.add
local.get $4
local.get $3
i32.add
i32.load8_u
i32.store8
br $continue|3
end
end
end
block $break|4
loop $continue|4
local.get $3
i32.const 8
i32.ge_u
if
local.get $3
i32.const 8
i32.sub
local.set $3
local.get $5
local.get $3
i32.add
local.get $4
local.get $3
i32.add
i64.load
i64.store
br $continue|4
end
end
end
end
block $break|5
loop $continue|5
local.get $3
if
local.get $5
local.get $3
i32.const 1
i32.sub
local.tee $3
i32.add
local.get $4
local.get $3
i32.add
i32.load8_u
i32.store8
br $continue|5
end
end
end
end
end
)
(func $~lib/rt/stub/__realloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
local.get $0
i32.const 16
i32.sub
local.set $2
local.get $2
i32.load offset=12
local.set $3
local.get $1
local.get $3
i32.gt_u
if
local.get $1
local.get $2
i32.load offset=8
call $~lib/rt/stub/__alloc
local.set $4
local.get $4
local.get $0
local.get $3
call $~lib/memory/memory.copy
local.get $4
local.set $0
else
local.get $2
local.get $1
i32.store offset=12
end
local.get $0
)
(func $~lib/rt/stub/__free (; 4 ;) (type $FUNCSIG$vi) (param $0 i32)
nop
)
(func $~lib/rt/stub/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
)
(func $~lib/rt/stub/__release (; 6 ;) (type $FUNCSIG$vi) (param $0 i32)
nop
)
(func $~lib/rt/stub/__collect (; 7 ;) (type $FUNCSIG$v)
nop
)
(func $~lib/rt/common/__instanceof (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(export "__instanceof" (func $~lib/rt/__instanceof))
(export "__typeinfo" (func $~lib/rt/__typeinfo))
(func $~lib/rt/__instanceof (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
local.get $0
i32.const 16
i32.sub
i32.load offset=8
local.set $2
global.get $~lib/builtins/RTTI_BASE
local.set $3
local.get $2
local.tee $0
if (result i32)
local.get $2
local.get $3
local.get $0
i32.const 104
i32.load
i32.le_u
else
@ -390,66 +27,51 @@
end
if
loop $continue|0
local.get $2
local.get $0
local.get $1
i32.eq
if
i32.const 1
return
end
local.get $3
local.get $2
i32.const 8
i32.mul
local.get $0
i32.const 3
i32.shl
i32.const 104
i32.add
i32.load offset=4
local.tee $2
local.tee $0
br_if $continue|0
end
end
i32.const 0
)
(func $~lib/rt/common/__typeinfo (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
global.get $~lib/builtins/RTTI_BASE
local.set $1
(func $~lib/rt/__typeinfo (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.eqz
if (result i32)
i32.const 1
else
local.get $0
local.get $1
i32.const 104
i32.load
i32.gt_u
else
i32.const 1
end
if
i32.const 24
i32.const 80
i32.const 55
i32.const 23
i32.const 34
call $~lib/builtins/abort
unreachable
end
local.get $1
local.get $0
i32.const 8
i32.mul
i32.const 3
i32.shl
i32.const 104
i32.add
i32.load
)
(func $start (; 10 ;) (type $FUNCSIG$v)
global.get $~lib/builtins/HEAP_BASE
i32.const 15
i32.add
i32.const 15
i32.const -1
i32.xor
i32.and
global.set $~lib/rt/stub/startOffset
global.get $~lib/rt/stub/startOffset
global.set $~lib/rt/stub/offset
)
(func $null (; 11 ;) (type $FUNCSIG$v)
(func $null (; 3 ;) (type $FUNCSIG$v)
nop
)
)

View File

@ -1,375 +1,20 @@
(module
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00")
(data (i32.const 64) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00")
(data (i32.const 120) "\10\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00")
(data (i32.const 64) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00")
(data (i32.const 104) "\10\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/rt/stub/startOffset (mut i32) (i32.const 0))
(global $~lib/rt/stub/offset (mut i32) (i32.const 0))
(global $~lib/builtins/RTTI_BASE i32 (i32.const 120))
(global $~lib/builtins/HEAP_BASE i32 (i32.const 256))
(global $~lib/rt/RTTI_BASE i32 (i32.const 104))
(export "memory" (memory $0))
(export "__alloc" (func $~lib/rt/stub/__alloc))
(export "__realloc" (func $~lib/rt/stub/__realloc))
(export "__free" (func $~lib/rt/stub/__free))
(export "__retain" (func $~lib/rt/stub/__retain))
(export "__release" (func $~lib/rt/stub/__release))
(export "__collect" (func $~lib/rt/stub/__collect))
(export "__instanceof" (func $~lib/rt/common/__instanceof))
(export "__typeinfo" (func $~lib/rt/common/__typeinfo))
(start $start)
(func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
local.get $0
i32.const 1073741808
i32.gt_u
if
unreachable
end
global.get $~lib/rt/stub/offset
i32.const 16
i32.add
local.set $2
local.get $2
local.get $0
local.tee $3
i32.const 1
local.tee $4
local.get $3
local.get $4
i32.gt_u
select
i32.add
i32.const 15
i32.add
i32.const 15
i32.const -1
i32.xor
i32.and
local.set $5
current_memory
local.set $6
local.get $5
local.get $6
i32.const 16
i32.shl
i32.gt_u
if
local.get $5
local.get $2
i32.sub
i32.const 65535
i32.add
i32.const 65535
i32.const -1
i32.xor
i32.and
i32.const 16
i32.shr_u
local.set $3
local.get $6
local.tee $4
local.get $3
local.tee $7
local.get $4
local.get $7
i32.gt_s
select
local.set $4
local.get $4
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 $5
global.set $~lib/rt/stub/offset
local.get $2
i32.const 16
i32.sub
local.set $8
local.get $8
local.get $1
i32.store offset=8
local.get $8
local.get $0
i32.store offset=12
local.get $2
)
(func $~lib/memory/memory.copy (; 2 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
block $~lib/util/memory/memmove|inlined.0
local.get $0
local.set $5
local.get $1
local.set $4
local.get $2
local.set $3
local.get $5
local.get $4
i32.eq
if
br $~lib/util/memory/memmove|inlined.0
end
local.get $5
local.get $4
i32.lt_u
if
local.get $4
i32.const 7
i32.and
local.get $5
i32.const 7
i32.and
i32.eq
if
block $break|0
loop $continue|0
local.get $5
i32.const 7
i32.and
if
local.get $3
i32.eqz
if
br $~lib/util/memory/memmove|inlined.0
end
local.get $3
i32.const 1
i32.sub
local.set $3
block (result i32)
local.get $5
local.tee $6
i32.const 1
i32.add
local.set $5
local.get $6
end
block (result i32)
local.get $4
local.tee $6
i32.const 1
i32.add
local.set $4
local.get $6
end
i32.load8_u
i32.store8
br $continue|0
end
end
end
block $break|1
loop $continue|1
local.get $3
i32.const 8
i32.ge_u
if
local.get $5
local.get $4
i64.load
i64.store
local.get $3
i32.const 8
i32.sub
local.set $3
local.get $5
i32.const 8
i32.add
local.set $5
local.get $4
i32.const 8
i32.add
local.set $4
br $continue|1
end
end
end
end
block $break|2
loop $continue|2
local.get $3
if
block (result i32)
local.get $5
local.tee $6
i32.const 1
i32.add
local.set $5
local.get $6
end
block (result i32)
local.get $4
local.tee $6
i32.const 1
i32.add
local.set $4
local.get $6
end
i32.load8_u
i32.store8
local.get $3
i32.const 1
i32.sub
local.set $3
br $continue|2
end
end
end
else
local.get $4
i32.const 7
i32.and
local.get $5
i32.const 7
i32.and
i32.eq
if
block $break|3
loop $continue|3
local.get $5
local.get $3
i32.add
i32.const 7
i32.and
if
local.get $3
i32.eqz
if
br $~lib/util/memory/memmove|inlined.0
end
local.get $5
local.get $3
i32.const 1
i32.sub
local.tee $3
i32.add
local.get $4
local.get $3
i32.add
i32.load8_u
i32.store8
br $continue|3
end
end
end
block $break|4
loop $continue|4
local.get $3
i32.const 8
i32.ge_u
if
local.get $3
i32.const 8
i32.sub
local.set $3
local.get $5
local.get $3
i32.add
local.get $4
local.get $3
i32.add
i64.load
i64.store
br $continue|4
end
end
end
end
block $break|5
loop $continue|5
local.get $3
if
local.get $5
local.get $3
i32.const 1
i32.sub
local.tee $3
i32.add
local.get $4
local.get $3
i32.add
i32.load8_u
i32.store8
br $continue|5
end
end
end
end
end
)
(func $~lib/rt/stub/__realloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
local.get $0
i32.const 16
i32.sub
local.set $2
local.get $2
i32.load offset=12
local.set $3
local.get $1
local.get $3
i32.gt_u
if
local.get $1
local.get $2
i32.load offset=8
call $~lib/rt/stub/__alloc
local.set $4
local.get $4
local.get $0
local.get $3
call $~lib/memory/memory.copy
local.get $4
local.set $0
else
local.get $2
local.get $1
i32.store offset=12
end
local.get $0
)
(func $~lib/rt/stub/__free (; 4 ;) (type $FUNCSIG$vi) (param $0 i32)
nop
)
(func $~lib/rt/stub/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
)
(func $~lib/rt/stub/__release (; 6 ;) (type $FUNCSIG$vi) (param $0 i32)
nop
)
(func $~lib/rt/stub/__collect (; 7 ;) (type $FUNCSIG$v)
nop
)
(func $~lib/rt/common/__instanceof (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(export "__instanceof" (func $~lib/rt/__instanceof))
(export "__typeinfo" (func $~lib/rt/__typeinfo))
(func $~lib/rt/__instanceof (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
local.get $0
@ -377,7 +22,7 @@
i32.sub
i32.load offset=8
local.set $2
global.get $~lib/builtins/RTTI_BASE
global.get $~lib/rt/RTTI_BASE
local.set $3
local.get $2
if (result i32)
@ -409,9 +54,9 @@
end
i32.const 0
)
(func $~lib/rt/common/__typeinfo (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(func $~lib/rt/__typeinfo (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
global.get $~lib/builtins/RTTI_BASE
global.get $~lib/rt/RTTI_BASE
local.set $1
local.get $0
i32.eqz
@ -426,7 +71,7 @@
if
i32.const 24
i32.const 80
i32.const 55
i32.const 23
i32.const 34
call $~lib/builtins/abort
unreachable
@ -438,18 +83,6 @@
i32.add
i32.load
)
(func $start (; 10 ;) (type $FUNCSIG$v)
global.get $~lib/builtins/HEAP_BASE
i32.const 15
i32.add
i32.const 15
i32.const -1
i32.xor
i32.and
global.set $~lib/rt/stub/startOffset
global.get $~lib/rt/stub/startOffset
global.set $~lib/rt/stub/offset
)
(func $null (; 11 ;) (type $FUNCSIG$v)
(func $null (; 3 ;) (type $FUNCSIG$v)
)
)

View File

@ -1,7 +1,7 @@
(module
(type $FUNCSIG$v (func))
(memory $0 1)
(data (i32.const 8) "\0e\00\00\00\01\00\00\00\11\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s\00")
(data (i32.const 8) "\0e\00\00\00\01\00\00\00\11\00\00\00\0e\00\00\00s\00i\00m\00d\00.\00t\00s")
(export "memory" (memory $0))
(func $start (; 0 ;) (type $FUNCSIG$v)
nop

View File

@ -1,23 +1,16 @@
(module
(type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $static-this/Foo.bar (mut i32) (i32.const 42))
(data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s")
(global $static-this/Foo.bar i32 (i32.const 42))
(export "memory" (memory $0))
(start $start)
(func $static-this/Foo.getBar (; 1 ;) (type $FUNCSIG$i) (result i32)
(func $start (; 1 ;) (type $FUNCSIG$v)
global.get $static-this/Foo.bar
)
(func $start:static-this (; 2 ;) (type $FUNCSIG$v)
call $static-this/Foo.getBar
i32.const 42
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -27,9 +20,7 @@
unreachable
end
)
(func $start (; 3 ;) (type $FUNCSIG$v)
call $start:static-this
)
(func $null (; 4 ;) (type $FUNCSIG$v)
(func $null (; 2 ;) (type $FUNCSIG$v)
nop
)
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -4,174 +4,65 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(data (i32.const 8) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s")
(export "memory" (memory $0))
(start $start)
(func $switch/doSwitch (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
block $break|0
block $case4|0
block $case3|0
block $case2|0
block $case1|0
block $case0|0
local.get $0
local.set $1
local.get $1
i32.const 1
i32.eq
br_if $case0|0
local.get $1
i32.const 0
i32.eq
br_if $case1|0
local.get $1
i32.const 2
i32.eq
br_if $case3|0
local.get $1
i32.const 3
i32.eq
br_if $case4|0
br $case2|0
end
i32.const 1
return
end
end
i32.const 0
return
block $case4|0
block $case2|0
local.get $0
i32.const 1
i32.ne
if
local.get $0
i32.eqz
br_if $case2|0
local.get $0
i32.const 2
i32.eq
br_if $case4|0
local.get $0
i32.const 3
i32.eq
br_if $case4|0
br $case2|0
end
i32.const 1
return
end
i32.const 23
i32.const 0
return
unreachable
end
unreachable
unreachable
i32.const 23
)
(func $switch/doSwitchDefaultOmitted (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
block $break|0
block $case2|0
block $case1|0
block $case0|0
local.get $0
local.set $1
local.get $1
i32.const 1
i32.eq
br_if $case0|0
local.get $1
i32.const 2
i32.eq
br_if $case1|0
local.get $1
i32.const 3
i32.eq
br_if $case2|0
br $break|0
end
i32.const 1
return
local.get $0
i32.const 1
i32.ne
if
local.get $0
i32.const 2
i32.eq
br_if $case2|0
local.get $0
i32.const 3
i32.eq
br_if $case2|0
br $break|0
end
i32.const 1
return
end
i32.const 23
return
end
i32.const 0
)
(func $switch/doSwitchBreakCase (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
block $break|0
block $case1|0
block $case0|0
local.get $0
local.set $1
local.get $1
i32.const 1
i32.eq
br_if $case0|0
br $case1|0
end
br $break|0
end
i32.const 2
return
end
i32.const 1
)
(func $switch/doSwitchBreakDefault (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
block $break|0
block $case1|0
block $case0|0
local.get $0
local.set $1
local.get $1
i32.const 1
i32.eq
br_if $case0|0
br $case1|0
end
i32.const 1
return
end
br $break|0
end
i32.const 2
)
(func $switch/doSwitchFallThroughCase (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
block $break|0
block $case1|0
block $case0|0
local.get $0
local.set $1
local.get $1
i32.const 1
i32.eq
br_if $case1|0
br $case0|0
end
i32.const 2
return
end
end
i32.const 1
)
(func $switch/doSwitchFallThroughDefault (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
block $break|0
block $case1|0
block $case0|0
local.get $0
local.set $1
local.get $1
i32.const 1
i32.eq
br_if $case0|0
br $case1|0
end
i32.const 1
return
end
end
i32.const 2
)
(func $switch/doSwitchEmpty (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
drop
i32.const 2
)
(func $start:switch (; 8 ;) (type $FUNCSIG$v)
(func $start:switch (; 3 ;) (type $FUNCSIG$v)
i32.const 0
call $switch/doSwitch
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
@ -183,8 +74,7 @@
i32.const 1
call $switch/doSwitch
i32.const 1
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -196,8 +86,7 @@
i32.const 2
call $switch/doSwitch
i32.const 23
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -209,8 +98,7 @@
i32.const 3
call $switch/doSwitch
i32.const 23
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -221,9 +109,6 @@
end
i32.const 4
call $switch/doSwitch
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
@ -234,9 +119,6 @@
end
i32.const 0
call $switch/doSwitch
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
@ -248,8 +130,7 @@
i32.const 1
call $switch/doSwitch
i32.const 1
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -261,8 +142,7 @@
i32.const 2
call $switch/doSwitch
i32.const 23
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -274,8 +154,7 @@
i32.const 3
call $switch/doSwitch
i32.const 23
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -286,9 +165,6 @@
end
i32.const 4
call $switch/doSwitch
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
@ -299,9 +175,6 @@
end
i32.const 0
call $switch/doSwitchDefaultOmitted
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
@ -313,8 +186,7 @@
i32.const 1
call $switch/doSwitchDefaultOmitted
i32.const 1
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -326,8 +198,7 @@
i32.const 2
call $switch/doSwitchDefaultOmitted
i32.const 23
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -339,8 +210,7 @@
i32.const 3
call $switch/doSwitchDefaultOmitted
i32.const 23
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -351,9 +221,6 @@
end
i32.const 4
call $switch/doSwitchDefaultOmitted
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
@ -362,205 +229,11 @@
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $switch/doSwitchBreakCase
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 51
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $switch/doSwitchBreakCase
i32.const 1
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 52
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2
call $switch/doSwitchBreakCase
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 53
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $switch/doSwitchBreakDefault
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 62
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $switch/doSwitchBreakDefault
i32.const 1
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 63
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2
call $switch/doSwitchBreakDefault
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 64
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $switch/doSwitchFallThroughCase
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 73
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $switch/doSwitchFallThroughCase
i32.const 1
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 74
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2
call $switch/doSwitchFallThroughCase
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 75
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $switch/doSwitchFallThroughDefault
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 84
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $switch/doSwitchFallThroughDefault
i32.const 1
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 85
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2
call $switch/doSwitchFallThroughDefault
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 86
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
call $switch/doSwitchEmpty
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 92
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1
call $switch/doSwitchEmpty
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 93
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2
call $switch/doSwitchEmpty
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 94
i32.const 0
call $~lib/builtins/abort
unreachable
end
)
(func $start (; 9 ;) (type $FUNCSIG$v)
(func $start (; 4 ;) (type $FUNCSIG$v)
call $start:switch
)
(func $null (; 10 ;) (type $FUNCSIG$v)
(func $null (; 5 ;) (type $FUNCSIG$v)
nop
)
)

View File

@ -1,545 +1,15 @@
(module
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00w\00a\00s\00i\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(global $~lib/common/target/Target.WASM32 i32 (i32.const 0))
(global $~lib/common/target/Target.WASM64 i32 (i32.const 1))
(global $~lib/common/target/Target.JS i32 (i32.const 2))
(global $~lib/ASC_TARGET i32 (i32.const 0))
(data (i32.const 8) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00w\00a\00s\00i\00.\00t\00s")
(global $wasi/sig (mut i32) (i32.const 1))
(export "memory" (memory $0))
(start $start)
(func $start:wasi (; 1 ;) (type $FUNCSIG$v)
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 4
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 5
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 6
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 20
i32.const 20
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 7
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 8
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 10
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 11
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 10
i32.const 10
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 12
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 13
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 14
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 32
i32.const 32
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 15
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 17
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2
i32.const 2
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 18
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 19
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 20
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 21
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 23
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 24
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 25
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 20
i32.const 20
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 26
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 27
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 32
i32.const 32
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 28
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 40
i32.const 40
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 29
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 48
i32.const 48
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 30
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 56
i32.const 56
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 31
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 33
i32.const 0
call $~lib/builtins/abort
unreachable
end
block
i32.const 4
i32.const 4
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 35
i32.const 2
call $~lib/builtins/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 36
i32.const 2
call $~lib/builtins/abort
unreachable
end
end
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 44
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 45
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 46
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 24
i32.const 24
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 47
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 32
i32.const 32
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 48
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 40
i32.const 40
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 49
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 48
i32.const 48
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 50
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 56
i32.const 56
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 51
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 53
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 54
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 16
i32.const 16
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 55
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 20
i32.const 20
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 56
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 0
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 58
i32.const 0
call $~lib/builtins/abort
unreachable
end
block
i32.const 4
i32.const 4
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 60
i32.const 2
call $~lib/builtins/abort
unreachable
end
i32.const 8
i32.const 8
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 61
i32.const 2
call $~lib/builtins/abort
unreachable
end
end
(func $start (; 0 ;) (type $FUNCSIG$v)
i32.const 9
global.set $wasi/sig
)
(func $start (; 2 ;) (type $FUNCSIG$v)
call $start:wasi
)
(func $null (; 3 ;) (type $FUNCSIG$v)
(func $null (; 1 ;) (type $FUNCSIG$v)
nop
)
)

View File

@ -3,9 +3,7 @@
(type $FUNCSIG$v (func))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00")
(table $0 1 funcref)
(elem (i32.const 0) $null)
(data (i32.const 8) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s")
(global $while/n (mut i32) (i32.const 10))
(global $while/m (mut i32) (i32.const 0))
(global $while/o (mut i32) (i32.const 0))
@ -13,26 +11,21 @@
(start $start)
(func $start:while (; 1 ;) (type $FUNCSIG$v)
(local $0 i32)
block $break|0
loop $continue|0
loop $continue|0
global.get $while/n
if
global.get $while/n
if
global.get $while/n
i32.const 1
i32.sub
global.set $while/n
global.get $while/m
i32.const 1
i32.add
global.set $while/m
br $continue|0
end
i32.const 1
i32.sub
global.set $while/n
global.get $while/m
i32.const 1
i32.add
global.set $while/m
br $continue|0
end
end
global.get $while/n
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
@ -43,8 +36,7 @@
end
global.get $while/m
i32.const 10
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -57,66 +49,55 @@
global.set $while/n
i32.const 0
global.set $while/m
block $break|1
loop $continue|1
loop $continue|1
global.get $while/n
if
global.get $while/n
i32.const 1
i32.sub
global.set $while/n
global.get $while/m
i32.const 1
i32.add
global.set $while/m
loop $continue|2
global.get $while/n
if
global.get $while/n
i32.const 1
i32.sub
global.set $while/n
global.get $while/o
i32.const 1
i32.add
global.set $while/o
br $continue|2
end
end
global.get $while/n
if
global.get $while/n
i32.const 1
i32.sub
global.set $while/n
global.get $while/m
i32.const 1
i32.add
global.set $while/m
block $break|2
loop $continue|2
global.get $while/n
if
global.get $while/n
i32.const 1
i32.sub
global.set $while/n
global.get $while/o
i32.const 1
i32.add
global.set $while/o
br $continue|2
end
end
end
global.get $while/n
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 21
i32.const 2
call $~lib/builtins/abort
unreachable
end
global.get $while/o
i32.const 9
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
i32.const 22
i32.const 2
call $~lib/builtins/abort
unreachable
end
br $continue|1
i32.const 24
i32.const 21
i32.const 2
call $~lib/builtins/abort
unreachable
end
global.get $while/o
i32.const 9
i32.ne
if
i32.const 0
i32.const 24
i32.const 22
i32.const 2
call $~lib/builtins/abort
unreachable
end
br $continue|1
end
end
global.get $while/n
i32.const 0
i32.eq
i32.eqz
if
i32.const 0
i32.const 24
@ -127,8 +108,7 @@
end
global.get $while/m
i32.const 1
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -139,8 +119,7 @@
end
global.get $while/o
i32.const 9
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -153,36 +132,29 @@
global.set $while/n
i32.const 0
global.set $while/m
block $break|3
loop $continue|3
block (result i32)
global.get $while/n
local.tee $0
i32.const 1
i32.sub
global.set $while/n
local.get $0
end
if (result i32)
global.get $while/m
i32.const 1
i32.add
local.tee $0
global.set $while/m
local.get $0
else
i32.const 0
end
if
nop
br $continue|3
end
loop $continue|3
global.get $while/n
local.tee $0
i32.const 1
i32.sub
global.set $while/n
local.get $0
if
global.get $while/m
i32.const 1
i32.add
local.tee $0
global.set $while/m
else
i32.const 0
local.set $0
end
local.get $0
br_if $continue|3
end
global.get $while/n
i32.const -1
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -193,8 +165,7 @@
end
global.get $while/m
i32.const 1
i32.eq
i32.eqz
i32.ne
if
i32.const 0
i32.const 24
@ -208,5 +179,6 @@
call $start:while
)
(func $null (; 3 ;) (type $FUNCSIG$v)
nop
)
)