Revised implicit type conversions; Initial function expression compilation

This commit is contained in:
dcodeIO
2018-02-28 01:48:01 +01:00
parent bda6cb9792
commit d4c00eaba3
36 changed files with 940 additions and 1754 deletions

View File

@ -16,29 +16,23 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 2)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 2)
(i32.const 2)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -62,14 +56,11 @@
(if
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 2)
)
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 2)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -137,44 +128,35 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 2)
(i32.const 2)
)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 1)
)
(i32.const 1)
)
(get_local $1)
(i32.eq
(i32.const 2)
(i32.const 2)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 2)
(i32.const 4)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 2)
(i32.const 4)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -311,29 +293,23 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 2)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 2)
(i32.const 2)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -357,14 +333,11 @@
(if
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 2)
)
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 2)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -456,44 +429,35 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 2)
(i32.const 2)
)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 2)
(i32.const 1)
)
(i32.const 1)
)
(get_local $1)
(i32.eq
(i32.const 2)
(i32.const 2)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 2)
(i32.const 4)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 2)
(i32.const 4)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -636,29 +600,23 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -682,14 +640,11 @@
(if
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -737,44 +692,35 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
(i32.const 1)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 4)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 4)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -905,29 +851,23 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -951,14 +891,11 @@
(if
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1008,44 +945,35 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
(i32.const 1)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 4)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 4)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1176,29 +1104,23 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 2)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 8)
(i32.const 2)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1222,14 +1144,11 @@
(if
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 2)
)
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 2)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1277,44 +1196,35 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 8)
(i32.const 2)
)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 1)
)
(i32.const 1)
)
(get_local $1)
(i32.eq
(i32.const 8)
(i32.const 2)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 8)
(i32.const 4)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 8)
(i32.const 4)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1445,29 +1355,23 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 2)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 8)
(i32.const 2)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1491,14 +1395,11 @@
(if
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 2)
)
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 2)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1546,44 +1447,35 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 8)
(i32.const 2)
)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 8)
(i32.const 1)
)
(i32.const 1)
)
(get_local $1)
(i32.eq
(i32.const 8)
(i32.const 2)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 8)
(i32.const 4)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 8)
(i32.const 4)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1714,29 +1606,23 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1760,14 +1646,11 @@
(if
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1815,44 +1698,35 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
(i32.const 1)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 4)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 4)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -1983,29 +1857,23 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -2029,14 +1897,11 @@
(if
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 2)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
@ -2084,44 +1949,35 @@
(i32.eqz
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.and
(if (result i32)
(i32.ne
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.and
(if (result i32)
(tee_local $1
(i32.eq
(i32.const 4)
(i32.const 1)
)
(i32.const 1)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 2)
)
)
(i32.const 0)
)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 4)
(i32.const 1)
)
)
(i32.const 1)
(get_local $1)
(i32.eq
(i32.const 4)
(i32.const 4)
)
)
(i32.const 1)
)
(i32.const 0)
)
(get_local $1)
(i32.eq