optimize logical and/or, initial null checking in flows

This commit is contained in:
dcode
2019-04-09 03:04:45 +02:00
parent c16c19e18d
commit da4a7751fd
73 changed files with 5920 additions and 6866 deletions

View File

@ -403,7 +403,7 @@
local.tee $3
i32.eqz
else
local.get $2
i32.const 0
end
if
local.get $2
@ -432,15 +432,11 @@
i32.const 1
return
end
local.get $0
local.get $1
i32.eqz
local.tee $2
if (result i32)
local.get $2
else
local.get $1
i32.eqz
end
i32.const 1
local.get $0
select
if
i32.const 0
return
@ -474,8 +470,8 @@
(local $7 i32)
(local $8 i64)
(local $9 i64)
(local $10 i64)
(local $11 i32)
(local $10 i32)
(local $11 i64)
(local $12 i32)
(local $13 i64)
(local $14 i32)
@ -484,22 +480,22 @@
local.get $3
local.get $1
i64.sub
local.set $8
local.set $9
i64.const 1
i32.const 0
local.get $4
i32.sub
local.tee $11
local.tee $10
i64.extend_i32_s
local.tee $1
i64.shl
local.tee $9
local.tee $11
i64.const 1
i64.sub
local.tee $13
local.get $3
i64.and
local.set $10
local.set $8
local.get $3
local.get $1
i64.shr_u
@ -668,10 +664,10 @@
local.set $4
local.get $6
i64.extend_i32_u
local.get $11
local.get $10
i64.extend_i32_s
i64.shl
local.get $10
local.get $8
i64.add
local.tee $1
local.get $5
@ -687,7 +683,7 @@
local.get $12
i32.add
i64.load32_u
local.get $11
local.get $10
i64.extend_i32_s
i64.shl
local.set $3
@ -702,43 +698,34 @@
i32.load16_u
local.set $4
loop $continue|2
block (result i32)
local.get $1
local.get $8
i64.lt_u
local.tee $0
if
local.get $5
local.get $1
i64.sub
local.get $3
i64.ge_u
local.set $0
end
local.get $0
end
local.get $5
local.get $1
i64.sub
local.get $3
i64.ge_u
i32.const 0
local.get $1
local.get $9
i64.lt_u
select
if (result i32)
i32.const 1
local.get $9
local.get $1
i64.sub
local.get $1
local.get $3
i64.add
local.tee $8
local.get $9
i64.sub
i64.gt_u
local.get $8
local.get $9
i64.lt_u
local.tee $0
if (result i32)
local.get $0
else
local.get $8
local.get $1
i64.sub
local.get $1
local.get $3
i64.add
local.get $8
i64.sub
i64.gt_u
end
select
else
local.get $0
i32.const 0
end
if
local.get $4
@ -766,11 +753,11 @@
i64.const 10
i64.mul
local.set $5
local.get $10
local.get $8
i64.const 10
i64.mul
local.tee $1
local.get $11
local.get $10
i64.extend_i32_s
i64.shr_u
local.tee $3
@ -805,7 +792,7 @@
local.get $1
local.get $13
i64.and
local.tee $10
local.tee $8
local.get $5
i64.ge_u
br_if $continue|3
@ -814,7 +801,7 @@
local.get $4
i32.add
global.set $~lib/util/number/_K
local.get $10
local.get $8
local.set $1
i32.const 0
local.get $4
@ -824,7 +811,7 @@
local.get $12
i32.add
i64.load32_u
local.get $8
local.get $9
i64.mul
local.set $3
local.get $2
@ -838,43 +825,34 @@
i32.load16_u
local.set $4
loop $continue|4
block (result i32)
local.get $1
local.get $3
i64.lt_u
local.tee $0
if
local.get $5
local.get $1
i64.sub
local.get $9
i64.ge_u
local.set $0
end
local.get $0
end
local.get $5
local.get $1
i64.sub
local.get $11
i64.ge_u
i32.const 0
local.get $1
local.get $3
i64.lt_u
select
if (result i32)
i32.const 1
local.get $3
local.get $1
local.get $9
i64.sub
local.get $1
local.get $11
i64.add
local.tee $8
local.get $3
i64.sub
i64.gt_u
local.get $8
local.get $3
i64.lt_u
local.tee $0
if (result i32)
local.get $0
else
local.get $3
local.get $1
i64.sub
local.get $1
local.get $9
i64.add
local.get $3
i64.sub
i64.gt_u
end
select
else
local.get $0
i32.const 0
end
if
local.get $4
@ -882,7 +860,7 @@
i32.sub
local.set $4
local.get $1
local.get $9
local.get $11
i64.add
local.set $1
br $continue|4
@ -1066,7 +1044,6 @@
)
(func $~lib/util/number/prettify (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
local.get $2
i32.eqz
if
@ -1088,14 +1065,13 @@
i32.add
local.tee $3
i32.le_s
local.tee $4
if
if (result i32)
local.get $3
i32.const 21
i32.le_s
local.set $4
else
i32.const 0
end
local.get $4
if (result i32)
loop $repeat|0
block $break|0
@ -1128,17 +1104,14 @@
i32.const 2
i32.add
else
local.get $3
i32.const 21
i32.le_s
i32.const 0
local.get $3
i32.const 0
i32.gt_s
local.tee $4
if
local.get $3
i32.const 21
i32.le_s
local.set $4
end
local.get $4
select
if (result i32)
local.get $3
i32.const 1
@ -1162,22 +1135,19 @@
i32.const 1
i32.add
else
local.get $3
i32.const 0
i32.le_s
i32.const 0
i32.const -6
local.get $3
i32.lt_s
local.tee $2
if
local.get $3
i32.const 0
i32.le_s
local.set $2
end
local.get $2
select
if (result i32)
i32.const 2
local.get $3
i32.sub
local.tee $4
local.tee $3
i32.const 1
i32.shl
local.get $0
@ -1195,7 +1165,7 @@
loop $repeat|1
block $break|1
local.get $2
local.get $4
local.get $3
i32.ge_s
br_if $break|1
local.get $2
@ -1213,7 +1183,7 @@
end
end
local.get $1
local.get $4
local.get $3
i32.add
else
local.get $1
@ -1292,7 +1262,7 @@
local.tee $0
i32.const 0
i32.lt_s
local.tee $4
local.tee $3
if
i32.const 0
local.get $0
@ -1310,7 +1280,7 @@
local.get $2
i32.const 45
i32.const 43
local.get $4
local.get $3
select
i32.store16
local.get $0
@ -1503,7 +1473,6 @@
(func $~lib/string/String#substring (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
local.get $0
i32.eqz
if
@ -1539,34 +1508,34 @@
local.get $2
i32.lt_s
select
local.tee $1
local.tee $2
local.get $3
local.get $1
local.get $2
i32.gt_s
select
i32.const 1
i32.shl
local.tee $4
local.tee $1
local.get $3
local.get $1
local.get $2
local.get $3
local.get $1
local.get $2
i32.lt_s
select
i32.const 1
i32.shl
local.tee $2
i32.sub
local.tee $3
i32.sub
local.tee $2
i32.eqz
if
i32.const 1840
return
end
local.get $2
i32.eqz
local.tee $1
if
local.get $3
if (result i32)
i32.const 0
else
local.get $0
i32.const 16
i32.sub
@ -1575,22 +1544,20 @@
i32.shr_u
i32.const 1
i32.shl
local.get $4
local.get $1
i32.eq
local.set $1
end
local.get $1
if
local.get $0
return
end
local.get $3
local.get $2
call $~lib/util/runtime/allocate
local.tee $1
local.get $0
local.get $2
i32.add
local.get $3
i32.add
local.get $2
call $~lib/memory/memory.copy
local.get $1
call $~lib/util/runtime/register