Rework inlining logic (#463)

This commit is contained in:
Daniel Wirtz
2019-02-06 23:42:43 +01:00
committed by GitHub
parent 01cade13f9
commit 831054dfd3
40 changed files with 14369 additions and 9544 deletions

View File

@ -4251,32 +4251,32 @@
(local $7 i32)
(local $8 i64)
(local $9 i32)
(local $10 i64)
(local $10 i32)
(local $11 i32)
(local $12 i32)
(local $12 i64)
(local $13 i64)
(local $14 i64)
local.get $3
local.get $1
i64.sub
local.set $8
local.set $12
i64.const 1
i32.const 0
local.get $4
i32.sub
local.tee $11
i64.extend_i32_s
local.tee $13
local.tee $1
i64.shl
local.tee $10
local.tee $13
i64.const 1
i64.sub
local.tee $14
local.get $3
i64.and
local.set $1
local.set $8
local.get $3
local.get $13
local.get $1
i64.shr_u
i32.wrap_i64
local.tee $7
@ -4284,7 +4284,7 @@
local.set $9
i32.const 4624
i32.load
local.set $12
local.set $10
loop $continue|0
local.get $9
i32.const 0
@ -4440,9 +4440,9 @@
local.get $11
i64.extend_i32_s
i64.shl
local.get $1
local.get $8
i64.add
local.tee $3
local.tee $1
local.get $5
i64.le_u
if
@ -4450,7 +4450,9 @@
local.get $9
i32.add
global.set $~lib/internal/number/_K
local.get $12
local.get $5
local.set $3
local.get $10
local.get $9
i32.const 2
i32.shl
@ -4459,7 +4461,9 @@
local.get $11
i64.extend_i32_s
i64.shl
local.set $1
local.set $8
local.get $12
local.set $5
local.get $6
i32.const 1
i32.sub
@ -4469,37 +4473,37 @@
i32.add
local.tee $2
i32.load16_u offset=4
local.set $7
local.set $10
loop $continue|2
local.get $3
local.get $8
local.get $1
local.get $5
i64.lt_u
local.tee $0
if
local.get $5
local.get $3
i64.sub
local.get $1
i64.sub
local.get $8
i64.ge_u
local.set $0
end
local.get $0
if
local.get $1
local.get $3
i64.add
local.get $8
i64.add
local.get $5
i64.lt_u
local.tee $0
i32.eqz
if
local.get $8
local.get $3
local.get $5
local.get $1
i64.sub
local.get $1
local.get $3
i64.add
local.get $8
i64.add
local.get $5
i64.sub
i64.gt_u
local.set $0
@ -4507,19 +4511,19 @@
end
local.get $0
if
local.get $7
local.get $10
i32.const 1
i32.sub
local.set $7
local.set $10
local.get $1
local.get $3
local.get $8
i64.add
local.set $3
local.set $1
br $continue|2
end
end
local.get $2
local.get $7
local.get $10
i32.store16 offset=4
local.get $6
return
@ -4532,14 +4536,14 @@
i64.const 10
i64.mul
local.set $5
local.get $1
local.get $8
i64.const 10
i64.mul
local.tee $1
local.tee $8
local.get $11
i64.extend_i32_s
i64.shr_u
local.tee $3
local.tee $1
local.get $6
i64.extend_i32_s
i64.or
@ -4556,7 +4560,7 @@
i32.shl
local.get $0
i32.add
local.get $3
local.get $1
i32.wrap_i64
i32.const 65535
i32.and
@ -4568,10 +4572,10 @@
i32.const 1
i32.sub
local.set $9
local.get $1
local.get $8
local.get $14
i64.and
local.tee $1
local.tee $8
local.get $5
i64.ge_u
br_if $continue|3
@ -4579,7 +4583,9 @@
local.get $9
i32.add
global.set $~lib/internal/number/_K
local.get $12
local.get $13
local.set $1
local.get $10
i32.const 0
local.get $9
i32.sub
@ -4587,49 +4593,50 @@
i32.shl
i32.add
i64.load32_u offset=8
local.get $8
local.get $12
i64.mul
local.set $8
local.set $3
local.get $6
local.tee $10
i32.const 1
i32.sub
i32.const 1
i32.shl
local.get $0
i32.add
local.tee $7
local.tee $4
i32.load16_u offset=4
local.set $4
local.set $6
loop $continue|4
local.get $1
local.get $8
local.get $3
i64.lt_u
local.tee $2
if
local.get $5
local.get $1
local.get $8
i64.sub
local.get $10
local.get $1
i64.ge_u
local.set $2
end
local.get $2
if
local.get $1
local.get $10
i64.add
local.get $8
i64.add
local.get $3
i64.lt_u
local.tee $2
i32.eqz
if
local.get $3
local.get $8
local.get $1
i64.sub
local.get $1
local.get $10
i64.add
local.get $8
i64.add
local.get $3
i64.sub
i64.gt_u
local.set $2
@ -4637,21 +4644,21 @@
end
local.get $2
if
local.get $4
local.get $6
i32.const 1
i32.sub
local.set $4
local.set $6
local.get $1
local.get $10
local.get $8
i64.add
local.set $1
local.set $8
br $continue|4
end
end
local.get $7
local.get $4
i32.store16 offset=4
local.get $6
i32.store16 offset=4
local.get $10
end
)
(func $~lib/internal/number/prettify (; 51 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
@ -4677,74 +4684,73 @@
local.get $1
local.get $2
i32.add
local.tee $5
i32.le_s
local.tee $3
i32.le_s
local.tee $4
if
local.get $5
local.get $3
i32.const 21
i32.le_s
local.set $3
local.set $4
end
local.get $3
local.get $4
if (result i32)
local.get $1
local.set $3
local.set $4
loop $repeat|0
block $break|0
local.get $4
local.get $3
local.get $5
i32.ge_s
br_if $break|0
local.get $3
local.get $4
i32.const 1
i32.shl
local.get $0
i32.add
i32.const 48
i32.store16 offset=4
local.get $3
local.get $4
i32.const 1
i32.add
local.set $3
local.set $4
br $repeat|0
end
end
local.get $5
local.get $3
i32.const 1
i32.shl
local.get $0
i32.add
i32.const 3145774
i32.store offset=4
local.get $5
local.get $3
i32.const 2
i32.add
else
local.get $5
local.get $3
i32.const 0
i32.gt_s
local.tee $3
local.tee $4
if
local.get $5
local.get $3
i32.const 21
i32.le_s
local.set $3
local.set $4
end
local.get $3
local.get $4
if (result i32)
local.get $5
local.get $3
i32.const 1
i32.shl
local.get $0
i32.add
local.tee $3
i32.const 4
i32.add
local.tee $0
local.tee $4
i32.const 2
i32.add
local.get $0
local.get $4
i32.const 0
local.get $2
i32.sub
@ -4752,6 +4758,10 @@
i32.shl
call $~lib/internal/memory/memmove
local.get $3
i32.const 1
i32.shl
local.get $0
i32.add
i32.const 46
i32.store16 offset=4
local.get $1
@ -4759,25 +4769,25 @@
i32.add
else
i32.const -6
local.get $5
local.get $3
i32.lt_s
local.tee $3
local.tee $4
if
local.get $5
local.get $3
i32.const 0
i32.le_s
local.set $3
local.set $4
end
local.get $3
local.get $4
if (result i32)
local.get $0
i32.const 4
i32.add
local.tee $2
i32.const 2
local.get $5
local.get $3
i32.sub
local.tee $3
local.tee $4
i32.const 1
i32.shl
i32.add
@ -4790,29 +4800,29 @@
i32.const 3014704
i32.store offset=4
i32.const 2
local.set $4
local.set $3
loop $repeat|1
block $break|1
local.get $4
local.get $3
local.get $4
i32.ge_s
br_if $break|1
local.get $4
local.get $3
i32.const 1
i32.shl
local.get $0
i32.add
i32.const 48
i32.store16 offset=4
local.get $4
local.get $3
i32.const 1
i32.add
local.set $4
local.set $3
br $repeat|1
end
end
local.get $1
local.get $3
local.get $4
i32.add
else
local.get $1
@ -4825,52 +4835,52 @@
local.get $0
i32.const 4
i32.add
local.tee $3
local.tee $4
block (result i32)
local.get $5
local.get $3
i32.const 1
i32.sub
local.tee $4
local.tee $3
i32.const 0
i32.lt_s
local.tee $2
if
i32.const 0
local.get $4
local.get $3
i32.sub
local.set $4
local.set $3
end
local.get $4
local.get $3
end
local.get $4
local.get $3
call $~lib/internal/number/decimalCount32
i32.const 1
i32.add
local.tee $4
local.tee $5
call $~lib/internal/number/utoa32_lut
local.get $3
local.get $4
i32.const 45
i32.const 43
local.get $2
select
i32.store16 offset=4
local.get $4
local.get $5
i32.const 2
i32.add
else
local.get $0
i32.const 4
i32.add
local.tee $3
local.tee $4
i32.const 4
i32.add
local.get $3
local.get $4
i32.const 2
i32.add
local.get $1
i32.const 1
i32.shl
local.tee $4
local.tee $5
i32.const 2
i32.sub
call $~lib/internal/memory/memmove
@ -4878,7 +4888,7 @@
i32.const 46
i32.store16 offset=6
local.get $0
local.get $4
local.get $5
i32.add
local.tee $0
i32.const 101
@ -4886,30 +4896,30 @@
local.get $0
i32.const 4
i32.add
local.tee $3
local.tee $4
block (result i32)
local.get $5
local.get $3
i32.const 1
i32.sub
local.tee $4
local.tee $3
i32.const 0
i32.lt_s
local.tee $2
if
i32.const 0
local.get $4
local.get $3
i32.sub
local.set $4
local.set $3
end
local.get $4
local.get $3
end
local.get $4
local.get $3
call $~lib/internal/number/decimalCount32
i32.const 1
i32.add
local.tee $0
call $~lib/internal/number/utoa32_lut
local.get $3
local.get $4
i32.const 45
i32.const 43
local.get $2
@ -4931,19 +4941,18 @@
(local $4 i32)
(local $5 i64)
(local $6 i32)
(local $7 i64)
(local $8 i32)
(local $7 i32)
(local $8 i64)
(local $9 i64)
(local $10 i64)
(local $11 i64)
(local $12 i64)
(local $13 i32)
(local $12 i32)
(local $13 i64)
(local $14 i32)
(local $15 i64)
local.get $1
f64.const 0
f64.lt
local.tee $13
local.tee $12
if (result f64)
local.get $0
i32.const 45
@ -4954,32 +4963,32 @@
local.get $1
end
i64.reinterpret_f64
local.tee $2
local.tee $13
i64.const 9218868437227405312
i64.and
i64.const 52
i64.shr_u
i32.wrap_i64
local.set $8
local.get $2
local.set $7
local.get $13
i64.const 4503599627370495
i64.and
local.get $8
local.get $7
i32.const 0
i32.ne
local.tee $6
local.tee $4
i64.extend_i32_u
i64.const 52
i64.shl
i64.add
local.set $2
local.get $8
local.get $7
i32.const 1
local.get $6
local.get $4
select
i32.const 1075
i32.sub
local.tee $8
local.tee $7
i32.const 1
i32.sub
local.set $6
@ -5008,7 +5017,7 @@
i64.shl
i64.const 1
i64.sub
local.get $8
local.get $7
local.get $14
i32.sub
local.get $6
@ -5075,27 +5084,27 @@
local.tee $2
i64.const 4294967295
i64.and
local.tee $7
local.tee $8
global.get $~lib/internal/number/_frc_pow
local.tee $5
i64.const 4294967295
i64.and
local.tee $9
i64.mul
local.set $10
local.set $3
local.get $5
i64.const 32
i64.shr_u
local.tee $11
local.get $7
local.tee $10
local.get $8
i64.mul
local.get $2
i64.const 32
i64.shr_u
local.tee $12
local.tee $2
local.get $9
i64.mul
local.get $10
local.get $3
i64.const 32
i64.shr_u
i64.add
@ -5107,43 +5116,43 @@
i64.add
i64.const 32
i64.shr_u
local.get $11
local.get $12
local.get $2
local.get $10
i64.mul
local.get $3
i64.const 32
i64.shr_u
i64.add
i64.add
local.set $2
local.set $13
local.get $5
i64.const 4294967295
i64.and
local.tee $11
local.tee $2
global.get $~lib/internal/number/_frc_plus
local.tee $3
i64.const 4294967295
i64.and
local.tee $10
i64.mul
local.set $7
local.set $11
local.get $10
local.get $5
i64.const 32
i64.shr_u
local.tee $8
i64.mul
local.get $2
local.get $3
i64.const 32
i64.shr_u
local.tee $9
i64.mul
local.get $11
local.get $3
i64.const 32
i64.shr_u
local.tee $12
i64.mul
local.get $7
i64.const 32
i64.shr_u
i64.add
local.tee $3
local.tee $2
i64.const 4294967295
i64.and
i64.add
@ -5151,97 +5160,95 @@
i64.add
i64.const 32
i64.shr_u
local.get $8
local.get $9
local.get $12
i64.mul
local.get $3
local.get $2
i64.const 32
i64.shr_u
i64.add
i64.add
local.set $15
local.set $11
global.get $~lib/internal/number/_frc_minus
local.tee $3
local.tee $2
i64.const 4294967295
i64.and
local.tee $7
local.tee $8
local.get $5
i64.const 4294967295
i64.and
local.tee $9
i64.mul
local.set $10
local.get $5
i64.const 32
i64.shr_u
local.tee $11
local.get $7
i64.mul
local.get $3
i64.const 32
i64.shr_u
local.tee $12
local.get $9
i64.mul
local.get $10
i64.const 32
i64.shr_u
i64.add
local.tee $3
i64.const 4294967295
i64.and
i64.add
local.set $5
local.get $15
local.set $3
local.get $11
i64.const 1
i64.sub
local.tee $7
local.get $11
local.get $12
local.tee $11
local.get $5
i64.const 32
i64.shr_u
local.tee $10
local.get $8
i64.mul
local.get $2
i64.const 32
i64.shr_u
local.tee $2
local.get $9
i64.mul
local.get $3
i64.const 32
i64.shr_u
i64.add
local.get $5
local.tee $3
i64.const 4294967295
i64.and
i64.add
i64.const 2147483647
i64.add
i64.const 32
i64.shr_u
local.get $2
local.get $10
i64.mul
local.get $3
i64.const 32
i64.shr_u
i64.add
i64.add
i64.const 1
i64.add
i64.sub
local.set $3
local.get $13
local.get $12
i32.const 1
i32.shl
local.get $0
i32.add
local.get $0
local.get $2
local.get $8
local.get $13
global.get $~lib/internal/number/_exp_pow
local.tee $14
local.get $7
local.get $4
i32.sub
global.get $~lib/internal/number/_exp_pow
local.tee $4
i32.add
i32.const -64
i32.sub
local.get $7
local.get $4
local.get $11
global.get $~lib/internal/number/_exp
local.get $14
i32.add
i32.const -64
i32.sub
local.get $3
local.get $13
local.get $12
call $~lib/internal/number/genDigits
local.get $13
local.get $12
i32.sub
global.get $~lib/internal/number/_K
call $~lib/internal/number/prettify
local.get $13
local.get $12
i32.add
)
(func $~lib/string/String#substring (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)