Add a 'call_indirect' builtin to emit arbitrary calls (might trap at runtime); Optimize 'for' loop compilation a bit

This commit is contained in:
dcodeIO
2018-05-25 15:59:17 +02:00
parent 51ede113dd
commit 7ad13f9d65
47 changed files with 3311 additions and 22111 deletions

View File

@ -8607,7 +8607,7 @@
(i64.const 12)
)
)
(loop $loop|0
(loop $repeat|0
(br_if $break|0
(i32.eqz
(i64.eqz
@ -8630,7 +8630,7 @@
(i64.const 1)
)
)
(br $loop|0)
(br $repeat|0)
)
)
(i64.shl
@ -8663,7 +8663,7 @@
(i64.const 12)
)
)
(loop $loop|1
(loop $repeat|1
(br_if $break|1
(i32.eqz
(i64.eqz
@ -8686,7 +8686,7 @@
(i64.const 1)
)
)
(br $loop|1)
(br $repeat|1)
)
)
(i64.shl
@ -8702,7 +8702,7 @@
)
)
(block $break|2
(loop $loop|2
(loop $repeat|2
(br_if $break|2
(i32.le_s
(get_local $3)
@ -8744,7 +8744,7 @@
(i32.const 1)
)
)
(br $loop|2)
(br $repeat|2)
)
)
(if
@ -8771,7 +8771,7 @@
)
)
(block $break|3
(loop $loop|3
(loop $repeat|3
(br_if $break|3
(i32.eqz
(i64.eqz
@ -8794,7 +8794,7 @@
(i64.const 1)
)
)
(br $loop|3)
(br $repeat|3)
)
)
(return
@ -9000,7 +9000,7 @@
(i32.const 9)
)
)
(loop $loop|0
(loop $repeat|0
(br_if $break|0
(i32.shr_u
(get_local $3)
@ -9019,7 +9019,7 @@
(i32.const 1)
)
)
(br $loop|0)
(br $repeat|0)
)
)
(i32.shl
@ -9050,7 +9050,7 @@
(i32.const 9)
)
)
(loop $loop|1
(loop $repeat|1
(br_if $break|1
(i32.shr_u
(get_local $3)
@ -9069,7 +9069,7 @@
(i32.const 1)
)
)
(br $loop|1)
(br $repeat|1)
)
)
(i32.shl
@ -9083,7 +9083,7 @@
)
)
(block $break|2
(loop $loop|2
(loop $repeat|2
(br_if $break|2
(i32.le_s
(get_local $4)
@ -9125,7 +9125,7 @@
(i32.const 1)
)
)
(br $loop|2)
(br $repeat|2)
)
)
(if
@ -9152,7 +9152,7 @@
)
)
(block $break|3
(loop $loop|3
(loop $repeat|3
(br_if $break|3
(i32.shr_u
(get_local $2)
@ -9171,7 +9171,7 @@
(i32.const 1)
)
)
(br $loop|3)
(br $repeat|3)
)
)
(return
@ -12401,7 +12401,7 @@
(i64.const 12)
)
)
(loop $loop|0
(loop $repeat|0
(br_if $break|0
(i64.ne
(i64.shr_u
@ -12423,7 +12423,7 @@
(i64.const 1)
)
)
(br $loop|0)
(br $repeat|0)
)
)
(i64.shl
@ -12464,7 +12464,7 @@
(i64.const 12)
)
)
(loop $loop|1
(loop $repeat|1
(br_if $break|1
(i64.ne
(i64.shr_u
@ -12486,7 +12486,7 @@
(i64.const 1)
)
)
(br $loop|1)
(br $repeat|1)
)
)
(i64.shl
@ -12531,7 +12531,7 @@
)
)
(block $break|3
(loop $loop|3
(loop $repeat|3
(br_if $break|3
(i32.le_s
(get_local $2)
@ -12581,7 +12581,7 @@
(i32.const 1)
)
)
(br $loop|3)
(br $repeat|3)
)
)
(if
@ -12618,7 +12618,7 @@
(i32.const -60)
)
(block $break|4
(loop $loop|4
(loop $repeat|4
(br_if $break|4
(i64.ne
(i64.shr_u
@ -12640,7 +12640,7 @@
(i32.const 1)
)
)
(br $loop|4)
(br $repeat|4)
)
)
)
@ -12866,7 +12866,7 @@
(i32.const 9)
)
)
(loop $loop|0
(loop $repeat|0
(br_if $break|0
(i32.shr_u
(get_local $2)
@ -12885,7 +12885,7 @@
(i32.const 1)
)
)
(br $loop|0)
(br $repeat|0)
)
)
(i32.shl
@ -12922,7 +12922,7 @@
(i32.const 9)
)
)
(loop $loop|1
(loop $repeat|1
(br_if $break|1
(i32.shr_u
(get_local $2)
@ -12941,7 +12941,7 @@
(i32.const 1)
)
)
(br $loop|1)
(br $repeat|1)
)
)
(i32.shl
@ -12985,7 +12985,7 @@
)
)
(block $break|3
(loop $loop|3
(loop $repeat|3
(br_if $break|3
(i32.le_s
(get_local $3)
@ -13034,7 +13034,7 @@
(i32.const 1)
)
)
(br $loop|3)
(br $repeat|3)
)
)
(if
@ -13064,7 +13064,7 @@
(if
(get_local $4)
(block $break|4
(loop $loop|4
(loop $repeat|4
(br_if $break|4
(i32.shr_u
(get_local $4)
@ -13083,7 +13083,7 @@
(i32.const 1)
)
)
(br $loop|4)
(br $repeat|4)
)
)
(set_local $3
@ -44238,7 +44238,7 @@
)
)
(block $break|0
(loop $loop|0
(loop $repeat|0
(br_if $break|0
(i32.eqz
(f64.lt
@ -44272,7 +44272,7 @@
(i32.const 1)
)
)
(br $loop|0)
(br $repeat|0)
)
(block
(call $~lib/env/abort
@ -44295,7 +44295,7 @@
(set_local $0
(i32.const 0)
)
(loop $loop|1
(loop $repeat|1
(br_if $break|1
(i32.eqz
(f64.lt
@ -44329,7 +44329,7 @@
(i32.const 1)
)
)
(br $loop|1)
(br $repeat|1)
)
(block
(call $~lib/env/abort