Restructure copy implementation to avoid type-indexed block
This commit is contained in:
25
wipforth.wat
25
wipforth.wat
@@ -542,20 +542,25 @@
|
|||||||
call $next)
|
call $next)
|
||||||
|
|
||||||
(func $copy (local $src i32) (local $dst i32) (local $n i32)
|
(func $copy (local $src i32) (local $dst i32) (local $n i32)
|
||||||
call $pop local.tee $dst
|
call $pop local.set $dst
|
||||||
call $pop local.tee $src
|
call $pop local.set $src
|
||||||
call $pop local.tee $n
|
call $pop local.set $n
|
||||||
|
|
||||||
block $done (param i32 i32 i32)
|
block $done
|
||||||
loop $loop (param i32 i32 i32) (result i32 i32 i32)
|
loop $loop
|
||||||
|
local.get $n
|
||||||
i32.eqz br_if $done
|
i32.eqz br_if $done
|
||||||
|
|
||||||
|
local.get $dst
|
||||||
|
local.get $src
|
||||||
i32.load8_u i32.store8
|
i32.load8_u i32.store8
|
||||||
local.get $dst i32.const 1 i32.add local.tee $dst
|
|
||||||
local.get $src i32.const 1 i32.add local.tee $src
|
local.get $dst i32.const 1 i32.add local.set $dst
|
||||||
local.get $n i32.const 1 i32.sub local.tee $n
|
local.get $src i32.const 1 i32.add local.set $src
|
||||||
br $loop
|
local.get $n i32.const 1 i32.sub local.set $n
|
||||||
|
|
||||||
|
br $loop
|
||||||
end
|
end
|
||||||
drop drop drop
|
|
||||||
end
|
end
|
||||||
|
|
||||||
call $next)
|
call $next)
|
||||||
|
|||||||
Reference in New Issue
Block a user