mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-28 14:11:46 +00:00
optimize logical and/or, initial null checking in flows
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user