Implement optional type parameters (#360)

* Add a NATIVE<T> macro type to simplify use of a native WebAssembly type
* Add default type parameters for internal helpers for explicit loads and stores
* Unify loadUnsafe/loadUnsafeWithOffset etc. into one
* Renamed loadUnsafe etc. into just LOAD, like a macro
* Implement parsing of index signatures, but ignore them, for properly linting code
* Refactor TypedArray<T> to use macros
This commit is contained in:
Daniel Wirtz
2018-12-07 14:33:32 +01:00
committed by GitHub
parent d7f4874650
commit ebae7cbd73
39 changed files with 4698 additions and 4128 deletions

View File

@ -0,0 +1,91 @@
(module
(type $ii (func (param i32) (result i32)))
(type $v (func))
(memory $0 0)
(table $0 1 anyfunc)
(elem (i32.const 0) $null)
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $optional-typeparameters/tConcrete (mut i32) (i32.const 0))
(global $optional-typeparameters/tDerived (mut i32) (i32.const 0))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $~lib/allocator/arena/__memory_allocate (; 0 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
get_local $0
i32.const 1073741824
i32.gt_u
if
unreachable
end
get_global $~lib/allocator/arena/offset
tee_local $1
get_local $0
i32.const 1
get_local $0
i32.const 1
i32.gt_u
select
i32.add
i32.const 7
i32.add
i32.const -8
i32.and
tee_local $2
current_memory
tee_local $3
i32.const 16
i32.shl
i32.gt_u
if
get_local $3
get_local $2
get_local $1
i32.sub
i32.const 65535
i32.add
i32.const -65536
i32.and
i32.const 16
i32.shr_u
tee_local $0
get_local $3
get_local $0
i32.gt_s
select
grow_memory
i32.const 0
i32.lt_s
if
get_local $0
grow_memory
i32.const 0
i32.lt_s
if
unreachable
end
end
end
get_local $2
set_global $~lib/allocator/arena/offset
get_local $1
)
(func $start (; 1 ;) (type $v)
i32.const 8
set_global $~lib/allocator/arena/startOffset
get_global $~lib/allocator/arena/startOffset
set_global $~lib/allocator/arena/offset
i32.const 0
call $~lib/allocator/arena/__memory_allocate
set_global $optional-typeparameters/tConcrete
i32.const 0
call $~lib/allocator/arena/__memory_allocate
set_global $optional-typeparameters/tDerived
)
(func $null (; 2 ;) (type $v)
nop
)
)

View File

@ -0,0 +1,28 @@
function testConcrete<T,U = i32>(a: T): U {
return a;
}
function testDerived<T,U = T>(a: T): U {
return a;
}
testConcrete<i32>(1);
testDerived<i32>(2);
class TestConcrete<T,U = i32> {
test<V = i32>(a: T, b: U): V {
return a + b;
}
}
class TestDerived<T,U = T> {
test<V = U>(a: T, b: U): V {
return a + b;
}
}
import "allocator/arena";
var tConcrete = new TestConcrete<i32>();
tConcrete.test<i32>(1, 2);
var tDerived = new TestDerived<f64>()
tDerived.test<f64>(1, 2);

View File

@ -0,0 +1,166 @@
(module
(type $ii (func (param i32) (result i32)))
(type $iiii (func (param i32 i32 i32) (result i32)))
(type $iFFF (func (param i32 f64 f64) (result f64)))
(type $v (func))
(memory $0 0)
(table $0 1 anyfunc)
(elem (i32.const 0) $null)
(global $~lib/internal/allocator/AL_BITS i32 (i32.const 3))
(global $~lib/internal/allocator/AL_SIZE i32 (i32.const 8))
(global $~lib/internal/allocator/AL_MASK i32 (i32.const 7))
(global $~lib/internal/allocator/MAX_SIZE_32 i32 (i32.const 1073741824))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $optional-typeparameters/tConcrete (mut i32) (i32.const 0))
(global $optional-typeparameters/tDerived (mut i32) (i32.const 0))
(global $HEAP_BASE i32 (i32.const 8))
(export "memory" (memory $0))
(export "table" (table $0))
(start $start)
(func $optional-typeparameters/testConcrete<i32,i32> (; 0 ;) (type $ii) (param $0 i32) (result i32)
get_local $0
)
(func $optional-typeparameters/testDerived<i32,i32> (; 1 ;) (type $ii) (param $0 i32) (result i32)
get_local $0
)
(func $~lib/allocator/arena/__memory_allocate (; 2 ;) (type $ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
get_local $0
get_global $~lib/internal/allocator/MAX_SIZE_32
i32.gt_u
if
unreachable
end
get_global $~lib/allocator/arena/offset
set_local $1
get_local $1
get_local $0
tee_local $2
i32.const 1
tee_local $3
get_local $2
get_local $3
i32.gt_u
select
i32.add
get_global $~lib/internal/allocator/AL_MASK
i32.add
get_global $~lib/internal/allocator/AL_MASK
i32.const -1
i32.xor
i32.and
set_local $4
current_memory
set_local $5
get_local $4
get_local $5
i32.const 16
i32.shl
i32.gt_u
if
get_local $4
get_local $1
i32.sub
i32.const 65535
i32.add
i32.const 65535
i32.const -1
i32.xor
i32.and
i32.const 16
i32.shr_u
set_local $2
get_local $5
tee_local $3
get_local $2
tee_local $6
get_local $3
get_local $6
i32.gt_s
select
set_local $3
get_local $3
grow_memory
i32.const 0
i32.lt_s
if
get_local $2
grow_memory
i32.const 0
i32.lt_s
if
unreachable
end
end
end
get_local $4
set_global $~lib/allocator/arena/offset
get_local $1
)
(func $~lib/memory/memory.allocate (; 3 ;) (type $ii) (param $0 i32) (result i32)
get_local $0
call $~lib/allocator/arena/__memory_allocate
return
)
(func $optional-typeparameters/TestConcrete<i32,i32>#test<i32> (; 4 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
get_local $1
get_local $2
i32.add
)
(func $optional-typeparameters/TestDerived<f64,f64>#test<f64> (; 5 ;) (type $iFFF) (param $0 i32) (param $1 f64) (param $2 f64) (result f64)
get_local $1
get_local $2
f64.add
)
(func $start (; 6 ;) (type $v)
(local $0 i32)
i32.const 1
call $optional-typeparameters/testConcrete<i32,i32>
drop
i32.const 2
call $optional-typeparameters/testDerived<i32,i32>
drop
get_global $HEAP_BASE
get_global $~lib/internal/allocator/AL_MASK
i32.add
get_global $~lib/internal/allocator/AL_MASK
i32.const -1
i32.xor
i32.and
set_global $~lib/allocator/arena/startOffset
get_global $~lib/allocator/arena/startOffset
set_global $~lib/allocator/arena/offset
block (result i32)
i32.const 0
call $~lib/memory/memory.allocate
set_local $0
get_local $0
end
set_global $optional-typeparameters/tConcrete
get_global $optional-typeparameters/tConcrete
i32.const 1
i32.const 2
call $optional-typeparameters/TestConcrete<i32,i32>#test<i32>
drop
block (result i32)
i32.const 0
call $~lib/memory/memory.allocate
set_local $0
get_local $0
end
set_global $optional-typeparameters/tDerived
get_global $optional-typeparameters/tDerived
f64.const 1
f64.const 2
call $optional-typeparameters/TestDerived<f64,f64>#test<f64>
drop
)
(func $null (; 7 ;) (type $v)
)
)

View File

@ -27,6 +27,7 @@
(export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall))
(func $~lib/array/Array<Array<i32>>#__get (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -37,11 +38,15 @@
i32.shr_u
i32.lt_u
if (result i32)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 2
i32.shl
i32.add
get_local $3
i32.add
i32.load offset=8
else
unreachable
@ -49,6 +54,7 @@
)
(func $~lib/array/Array<i32>#__get (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -59,11 +65,15 @@
i32.shr_u
i32.lt_u
if (result i32)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 2
i32.shl
i32.add
get_local $3
i32.add
i32.load offset=8
else
unreachable
@ -78,6 +88,7 @@
)
(func $~lib/array/Array<String>#__get (; 4 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -88,11 +99,15 @@
i32.shr_u
i32.lt_u
if (result i32)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 2
i32.shl
i32.add
get_local $3
i32.add
i32.load offset=8
else
unreachable
@ -234,6 +249,7 @@
)
(func $~lib/array/Array<Array<String>>#__get (; 9 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -244,11 +260,15 @@
i32.shr_u
i32.lt_u
if (result i32)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 2
i32.shl
i32.add
get_local $3
i32.add
i32.load offset=8
else
unreachable

View File

@ -39,6 +39,7 @@
(start $start)
(func $~lib/array/Array<i8>#__get (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -49,11 +50,15 @@
i32.shr_u
i32.lt_u
if (result i32)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 0
i32.shl
i32.add
get_local $3
i32.add
i32.load8_s offset=8
else
unreachable
@ -61,6 +66,7 @@
)
(func $~lib/array/Array<i32>#__get (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -71,11 +77,15 @@
i32.shr_u
i32.lt_u
if (result i32)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 2
i32.shl
i32.add
get_local $3
i32.add
i32.load offset=8
else
unreachable
@ -471,7 +481,7 @@
if
i32.const 0
i32.const 136
i32.const 45
i32.const 46
i32.const 39
call $~lib/env/abort
unreachable
@ -521,14 +531,19 @@
)
(func $~lib/array/Array<i8>#__unchecked_set (; 9 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
get_local $0
i32.load
set_local $3
i32.const 0
set_local $4
get_local $3
get_local $1
i32.const 0
i32.shl
i32.add
get_local $4
i32.add
get_local $2
i32.store8 offset=8
)
@ -543,7 +558,7 @@
if
i32.const 0
i32.const 136
i32.const 45
i32.const 46
i32.const 39
call $~lib/env/abort
unreachable
@ -593,14 +608,19 @@
)
(func $~lib/array/Array<i32>#__unchecked_set (; 11 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
get_local $0
i32.load
set_local $3
i32.const 0
set_local $4
get_local $3
get_local $1
i32.const 2
i32.shl
i32.add
get_local $4
i32.add
get_local $2
i32.store offset=8
)
@ -615,7 +635,7 @@
if
i32.const 0
i32.const 136
i32.const 45
i32.const 46
i32.const 39
call $~lib/env/abort
unreachable
@ -665,14 +685,19 @@
)
(func $~lib/array/Array<Ref>#__unchecked_set (; 13 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
get_local $0
i32.load
set_local $3
i32.const 0
set_local $4
get_local $3
get_local $1
i32.const 2
i32.shl
i32.add
get_local $4
i32.add
get_local $2
i32.store offset=8
)
@ -703,7 +728,7 @@
if
i32.const 0
i32.const 136
i32.const 45
i32.const 46
i32.const 39
call $~lib/env/abort
unreachable
@ -753,14 +778,19 @@
)
(func $~lib/array/Array<RefWithCtor>#__unchecked_set (; 16 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
get_local $0
i32.load
set_local $3
i32.const 0
set_local $4
get_local $3
get_local $1
i32.const 2
i32.shl
i32.add
get_local $4
i32.add
get_local $2
i32.store offset=8
)

View File

@ -729,7 +729,7 @@
if
i32.const 0
i32.const 8
i32.const 45
i32.const 46
i32.const 39
call $~lib/env/abort
unreachable
@ -997,10 +997,10 @@
i32.ge_s
i32.eqz
if
get_local $6
get_local $2
i32.const 2
i32.shl
get_local $6
i32.add
get_local $1
i32.store offset=8
@ -2344,7 +2344,7 @@
if
i32.const 0
i32.const 8
i32.const 184
i32.const 185
i32.const 42
call $~lib/env/abort
unreachable
@ -2361,10 +2361,10 @@
get_local $0
get_local $3
i32.store offset=4
get_local $4
get_local $2
i32.const 2
i32.shl
get_local $4
i32.add
get_local $1
i32.store offset=8
@ -2381,7 +2381,7 @@
if
i32.const 0
i32.const 8
i32.const 246
i32.const 247
i32.const 20
call $~lib/env/abort
unreachable
@ -2582,15 +2582,15 @@
loop $continue|0
get_local $3
if
get_local $6
get_local $1
i32.const 2
i32.shl
get_local $6
i32.add
get_local $6
get_local $2
i32.const 2
i32.shl
get_local $6
i32.add
i32.load offset=8
i32.store offset=8
@ -2679,7 +2679,7 @@
if
i32.const 0
i32.const 8
i32.const 336
i32.const 337
i32.const 42
call $~lib/env/abort
unreachable
@ -2731,7 +2731,7 @@
if
i32.const 0
i32.const 8
i32.const 307
i32.const 308
i32.const 20
call $~lib/env/abort
unreachable
@ -2784,29 +2784,29 @@
get_local $2
i32.ge_s
br_if $break|0
get_local $3
get_local $1
i32.const 2
i32.shl
get_local $3
i32.add
i32.load offset=8
set_local $4
get_local $3
get_local $1
i32.const 2
i32.shl
get_local $3
i32.add
get_local $3
get_local $2
i32.const 2
i32.shl
get_local $3
i32.add
i32.load offset=8
i32.store offset=8
get_local $3
get_local $2
i32.const 2
i32.shl
get_local $3
i32.add
get_local $4
i32.store offset=8
@ -2866,10 +2866,10 @@
get_local $4
i32.lt_s
if
get_local $0
get_local $2
i32.const 2
i32.shl
get_local $0
i32.add
i32.load offset=8
get_local $1
@ -3019,7 +3019,7 @@
if
i32.const 0
i32.const 8
i32.const 109
i32.const 110
i32.const 41
call $~lib/env/abort
unreachable
@ -3039,10 +3039,10 @@
get_local $4
i32.store offset=4
end
get_local $3
get_local $1
i32.const 2
i32.shl
get_local $3
i32.add
get_local $2
i32.store offset=8
@ -3080,10 +3080,10 @@
br_if $break|0
i32.const 3
set_global $~argc
get_local $4
get_local $2
i32.const 2
i32.shl
get_local $4
i32.add
i32.load offset=8
get_local $2
@ -3166,10 +3166,10 @@
br_if $break|0
i32.const 3
set_global $~argc
get_local $4
get_local $2
i32.const 2
i32.shl
get_local $4
i32.add
i32.load offset=8
get_local $2
@ -3252,10 +3252,10 @@
br_if $break|0
i32.const 3
set_global $~argc
get_local $4
get_local $2
i32.const 2
i32.shl
get_local $4
i32.add
i32.load offset=8
get_local $2
@ -3339,10 +3339,10 @@
br_if $break|0
i32.const 3
set_global $~argc
get_local $4
get_local $2
i32.const 2
i32.shl
get_local $4
i32.add
i32.load offset=8
get_local $2
@ -3483,15 +3483,15 @@
br_if $break|0
i32.const 3
set_global $~argc
get_local $2
i32.const 2
i32.shl
get_local $7
i32.add
get_local $2
i32.const 2
i32.shl
i32.add
get_local $4
get_local $2
i32.const 2
i32.shl
i32.add
i32.load offset=8
get_local $2
@ -3561,10 +3561,10 @@
get_local $3
i32.eqz
br_if $break|0
get_local $5
get_local $2
i32.const 2
i32.shl
get_local $5
i32.add
i32.load offset=8
set_local $3
@ -3659,10 +3659,10 @@
i32.const 4
set_global $~argc
get_local $2
get_local $5
get_local $3
i32.const 2
i32.shl
get_local $5
i32.add
i32.load offset=8
get_local $3
@ -3736,10 +3736,10 @@
i32.const 4
set_global $~argc
get_local $2
get_local $4
get_local $3
i32.const 2
i32.shl
get_local $4
i32.add
i32.load offset=8
get_local $3
@ -4074,14 +4074,12 @@
get_local $3
i32.const 2
i32.shl
tee_local $1
get_local $0
i32.add
tee_local $1
f32.load offset=8
f32.store offset=8
get_local $0
get_local $1
i32.add
get_local $6
f32.store offset=8
i32.const 1
@ -4183,12 +4181,11 @@
get_local $0
i32.const 4
i32.add
tee_local $2
tee_local $1
f32.load offset=8
set_local $6
get_local $2
get_local $1
get_local $0
tee_local $1
f32.load offset=8
f32.store offset=8
get_local $0
@ -4205,7 +4202,7 @@
if
i32.const 0
i32.const 8
i32.const 408
i32.const 409
i32.const 4
call $~lib/env/abort
unreachable
@ -4648,14 +4645,12 @@
get_local $3
i32.const 3
i32.shl
tee_local $1
get_local $0
i32.add
tee_local $1
f64.load offset=8
f64.store offset=8
get_local $0
get_local $1
i32.add
get_local $6
f64.store offset=8
i32.const 1
@ -4757,12 +4752,11 @@
get_local $0
i32.const 8
i32.add
tee_local $2
tee_local $1
f64.load offset=8
set_local $6
get_local $2
get_local $1
get_local $0
tee_local $1
f64.load offset=8
f64.store offset=8
get_local $0
@ -4779,7 +4773,7 @@
if
i32.const 0
i32.const 8
i32.const 408
i32.const 409
i32.const 4
call $~lib/env/abort
unreachable
@ -5106,19 +5100,19 @@
get_local $1
i32.const 1
i32.sub
set_local $4
set_local $3
loop $repeat|0
get_local $4
get_local $3
i32.const 0
i32.gt_s
if
get_local $4
set_local $3
get_local $3
set_local $4
loop $continue|1
get_local $3
get_local $4
i32.const 1
i32.and
get_local $3
get_local $4
i32.const 6
i32.shr_s
i32.const 2
@ -5126,7 +5120,7 @@
get_local $7
i32.add
i32.load
get_local $3
get_local $4
i32.const 1
i32.shr_s
i32.const 31
@ -5136,14 +5130,14 @@
i32.and
i32.eq
if
get_local $3
get_local $4
i32.const 1
i32.shr_s
set_local $3
set_local $4
br $continue|1
end
end
get_local $3
get_local $4
i32.const 1
i32.shr_s
tee_local $5
@ -5152,8 +5146,8 @@
get_local $0
i32.add
i32.load offset=8
set_local $3
get_local $4
set_local $4
get_local $3
i32.const 2
i32.shl
get_local $0
@ -5162,14 +5156,14 @@
set_local $6
i32.const 2
set_global $~argc
get_local $3
get_local $4
get_local $6
get_local $2
call_indirect (type $iii)
i32.const 0
i32.lt_s
if
get_local $4
get_local $3
i32.const 5
i32.shr_s
i32.const 2
@ -5180,18 +5174,18 @@
get_local $8
i32.load
i32.const 1
get_local $4
get_local $3
i32.const 31
i32.and
i32.shl
i32.xor
i32.store
get_local $4
get_local $3
i32.const 2
i32.shl
get_local $0
i32.add
get_local $3
get_local $4
i32.store offset=8
get_local $5
i32.const 2
@ -5201,19 +5195,19 @@
get_local $6
i32.store offset=8
end
get_local $4
get_local $3
i32.const 1
i32.sub
set_local $4
set_local $3
br $repeat|0
end
end
get_local $1
i32.const 1
i32.sub
set_local $4
set_local $3
loop $repeat|2
get_local $4
get_local $3
i32.const 2
i32.ge_s
if
@ -5221,17 +5215,15 @@
i32.load offset=8
set_local $6
get_local $0
get_local $4
get_local $3
i32.const 2
i32.shl
tee_local $1
get_local $0
i32.add
tee_local $1
i32.load offset=8
i32.store offset=8
get_local $0
get_local $1
i32.add
get_local $6
i32.store offset=8
i32.const 1
@ -5255,11 +5247,11 @@
i32.const 1
i32.shl
i32.add
tee_local $3
get_local $4
tee_local $4
get_local $3
i32.lt_s
if
get_local $3
get_local $4
set_local $5
br $continue|3
end
@ -5278,11 +5270,11 @@
get_local $0
i32.add
i32.load offset=8
set_local $3
set_local $4
i32.const 2
set_global $~argc
get_local $6
get_local $3
get_local $4
get_local $2
call_indirect (type $iii)
i32.const 0
@ -5313,7 +5305,7 @@
get_local $6
i32.store offset=8
get_local $0
get_local $3
get_local $4
i32.store offset=8
end
get_local $5
@ -5323,22 +5315,21 @@
br $continue|4
end
end
get_local $4
get_local $3
i32.const 1
i32.sub
set_local $4
set_local $3
br $repeat|2
end
end
get_local $0
i32.const 4
i32.add
tee_local $3
tee_local $2
i32.load offset=8
set_local $1
get_local $3
get_local $2
get_local $0
tee_local $2
i32.load offset=8
i32.store offset=8
get_local $0
@ -5354,7 +5345,7 @@
if
i32.const 0
i32.const 8
i32.const 408
i32.const 409
i32.const 4
call $~lib/env/abort
unreachable
@ -5743,7 +5734,7 @@
if
i32.const 0
i32.const 8
i32.const 408
i32.const 409
i32.const 4
call $~lib/env/abort
unreachable
@ -6639,20 +6630,20 @@
i32.shl
get_local $0
i32.add
get_local $3
get_local $4
i32.const 100
i32.div_u
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
get_local $3
get_local $4
i32.const 100
i32.rem_u
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
i64.const 32
@ -6682,10 +6673,10 @@
i32.shl
get_local $0
i32.add
get_local $3
get_local $4
i32.const 2
i32.shl
get_local $3
i32.add
i32.load offset=8
i32.store offset=4
@ -6701,10 +6692,10 @@
i32.shl
get_local $0
i32.add
get_local $3
get_local $1
i32.const 2
i32.shl
get_local $3
i32.add
i32.load offset=8
i32.store offset=4
@ -7283,10 +7274,10 @@
get_local $9
i32.add
set_global $~lib/internal/number/_K
get_local $12
get_local $9
i32.const 2
i32.shl
get_local $12
i32.add
i64.load32_u offset=8
get_local $11
@ -7412,12 +7403,12 @@
get_local $9
i32.add
set_global $~lib/internal/number/_K
get_local $12
i32.const 0
get_local $9
i32.sub
i32.const 2
i32.shl
get_local $12
i32.add
i64.load32_u offset=8
get_local $8
@ -7430,9 +7421,9 @@
i32.shl
get_local $0
i32.add
tee_local $4
tee_local $7
i32.load16_u offset=4
set_local $7
set_local $4
loop $continue|4
get_local $1
get_local $8
@ -7470,10 +7461,10 @@
end
get_local $2
if
get_local $7
get_local $4
i32.const 1
i32.sub
set_local $7
set_local $4
get_local $1
get_local $10
i64.add
@ -7481,8 +7472,8 @@
br $continue|4
end
end
get_local $4
get_local $7
get_local $4
i32.store16 offset=4
get_local $6
else
@ -7888,10 +7879,10 @@
i32.add
i64.load offset=8
set_global $~lib/internal/number/_frc_pow
get_local $4
get_local $5
i32.const 1
i32.shl
get_local $4
i32.add
i32.load16_s offset=8
set_global $~lib/internal/number/_exp_pow
@ -8368,10 +8359,10 @@
get_local $2
i32.ge_s
br_if $break|0
get_local $6
get_local $0
i32.const 2
i32.shl
get_local $6
i32.add
i32.load offset=8
i32.load
@ -8402,10 +8393,10 @@
get_local $5
i32.ge_s
br_if $break|1
get_local $6
get_local $3
i32.const 2
i32.shl
get_local $6
i32.add
i32.load offset=8
tee_local $4
@ -8443,10 +8434,10 @@
br $repeat|1
end
end
get_local $6
get_local $5
i32.const 2
i32.shl
get_local $6
i32.add
i32.load offset=8
tee_local $4
@ -8504,20 +8495,22 @@
i32.add
tee_local $7
call $~lib/internal/string/allocateUnsafe
set_local $2
i32.const 0
set_local $0
loop $repeat|0
get_local $2
get_local $0
get_local $3
i32.lt_s
if
get_local $2
get_local $0
i32.const 2
i32.shl
get_local $5
i32.add
i32.load offset=8
if
get_local $0
get_local $2
get_local $1
i32.const 6792
i32.const 0
@ -8530,7 +8523,7 @@
end
get_local $6
if
get_local $0
get_local $2
get_local $1
i32.const 4136
i32.const 0
@ -8541,10 +8534,10 @@
i32.add
set_local $1
end
get_local $2
get_local $0
i32.const 1
i32.add
set_local $2
set_local $0
br $repeat|0
end
end
@ -8555,7 +8548,7 @@
i32.add
i32.load offset=8
if
get_local $0
get_local $2
get_local $1
i32.const 6792
i32.const 0
@ -8566,17 +8559,17 @@
i32.add
set_local $1
end
get_local $0
set_local $2
get_local $2
set_local $0
get_local $7
get_local $1
i32.gt_s
if
get_local $0
get_local $2
get_local $1
call $~lib/string/String#substring
set_local $2
get_local $0
set_local $0
get_local $2
i32.eqz
if
i32.const 0
@ -8587,7 +8580,7 @@
unreachable
end
end
get_local $2
get_local $0
)
(func $~lib/internal/number/itoa_stream<i8> (; 128 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
@ -8999,6 +8992,7 @@
i32.shl
get_local $0
i32.add
get_local $3
get_local $4
i32.const 10000
i32.rem_u
@ -9007,15 +9001,14 @@
i32.div_u
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
get_local $3
get_local $4
i32.const 100
i32.rem_u
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
i64.const 32
@ -9030,16 +9023,16 @@
i32.shl
get_local $0
i32.add
get_local $3
get_local $6
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
get_local $3
get_local $5
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
i64.const 32
@ -9869,10 +9862,10 @@
get_local $4
i32.ge_s
br_if $break|0
get_local $5
get_local $0
i32.const 2
i32.shl
get_local $5
i32.add
i32.load offset=8
tee_local $3
@ -9898,10 +9891,10 @@
br $repeat|0
end
end
get_local $5
get_local $4
i32.const 2
i32.shl
get_local $5
i32.add
i32.load offset=8
tee_local $3

File diff suppressed because it is too large Load Diff

View File

@ -339,7 +339,7 @@
end
end
)
(func $~lib/internal/typedarray/TypedArray<u8,u32>#constructor (; 4 ;) (type $FUNCSIG$i) (result i32)
(func $~lib/internal/typedarray/TypedArray<u8>#constructor (; 4 ;) (type $FUNCSIG$i) (result i32)
(local $0 i32)
(local $1 i32)
i32.const 8
@ -371,7 +371,7 @@
i32.store offset=8
get_local $0
)
(func $~lib/internal/typedarray/TypedArray<u8,u32>#__set (; 5 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/typedarray/TypedArray<u8>#__set (; 5 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
get_local $1
get_local $0
i32.load offset=8
@ -379,16 +379,16 @@
if
i32.const 0
i32.const 8
i32.const 54
i32.const 51
i32.const 63
call $~lib/env/abort
unreachable
end
get_local $0
i32.load offset=4
get_local $1
get_local $0
i32.load
get_local $0
i32.load offset=4
i32.add
i32.add
get_local $2
@ -1092,40 +1092,40 @@
set_global $~lib/allocator/arena/startOffset
get_global $~lib/allocator/arena/startOffset
set_global $~lib/allocator/arena/offset
call $~lib/internal/typedarray/TypedArray<u8,u32>#constructor
call $~lib/internal/typedarray/TypedArray<u8>#constructor
set_global $std/dataview/array
get_global $std/dataview/array
i32.const 0
i32.const 246
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 1
i32.const 224
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 2
i32.const 88
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 3
i32.const 159
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 4
i32.const 130
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 5
i32.const 101
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 6
i32.const 67
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 7
i32.const 95
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.load
get_global $std/dataview/array

View File

@ -415,7 +415,7 @@
call $~lib/allocator/arena/__memory_allocate
return
)
(func $~lib/internal/typedarray/TypedArray<u8,u32>#constructor (; 6 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(func $~lib/internal/typedarray/TypedArray<u8>#constructor (; 6 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@ -426,7 +426,7 @@
if
i32.const 0
i32.const 8
i32.const 27
i32.const 24
i32.const 34
call $~lib/env/abort
unreachable
@ -480,7 +480,7 @@
i32.store offset=8
get_local $0
)
(func $~lib/internal/typedarray/TypedArray<u8,u32>#__set (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(func $~lib/internal/typedarray/TypedArray<u8>#__set (; 7 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
get_local $1
@ -492,7 +492,7 @@
if
i32.const 0
i32.const 8
i32.const 54
i32.const 51
i32.const 63
call $~lib/env/abort
unreachable
@ -504,12 +504,12 @@
i32.load offset=4
set_local $4
get_local $3
get_local $4
i32.add
get_local $1
i32.const 0
i32.shl
i32.add
get_local $4
i32.add
get_local $2
i32.store8 offset=8
)
@ -1703,40 +1703,40 @@
set_global $~lib/allocator/arena/offset
i32.const 0
i32.const 8
call $~lib/internal/typedarray/TypedArray<u8,u32>#constructor
call $~lib/internal/typedarray/TypedArray<u8>#constructor
set_global $std/dataview/array
get_global $std/dataview/array
i32.const 0
i32.const 246
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 1
i32.const 224
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 2
i32.const 88
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 3
i32.const 159
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 4
i32.const 130
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 5
i32.const 101
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 6
i32.const 67
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
get_global $std/dataview/array
i32.const 7
i32.const 95
call $~lib/internal/typedarray/TypedArray<u8,u32>#__set
call $~lib/internal/typedarray/TypedArray<u8>#__set
i32.const 0
get_global $std/dataview/array
i32.load

View File

@ -1900,7 +1900,7 @@
if
i32.const 0
i32.const 72
i32.const 109
i32.const 110
i32.const 41
call $~lib/env/abort
unreachable
@ -1920,10 +1920,10 @@
get_local $4
i32.store offset=4
end
get_local $3
get_local $1
i32.const 2
i32.shl
get_local $3
i32.add
get_local $2
i32.store offset=8

View File

@ -2412,6 +2412,7 @@
(func $~lib/array/Array<Foo>#__set (; 28 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
get_local $0
i32.load
set_local $3
@ -2430,7 +2431,7 @@
if
i32.const 0
i32.const 72
i32.const 109
i32.const 110
i32.const 41
call $~lib/env/abort
unreachable
@ -2452,11 +2453,15 @@
i32.add
i32.store offset=4
end
i32.const 0
set_local $5
get_local $3
get_local $1
i32.const 2
i32.shl
i32.add
get_local $5
i32.add
get_local $2
i32.store offset=8
get_local $0

View File

@ -43,6 +43,7 @@
(start $start)
(func $~lib/array/Array<i32>#__get (; 1 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -53,11 +54,15 @@
i32.shr_u
i32.lt_u
if (result i32)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 2
i32.shl
i32.add
get_local $3
i32.add
i32.load offset=8
else
unreachable
@ -1978,6 +1983,7 @@
(func $~lib/array/Array<i32>#__set (; 9 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
get_local $0
i32.load
set_local $3
@ -1996,7 +2002,7 @@
if
i32.const 0
i32.const 184
i32.const 109
i32.const 110
i32.const 41
call $~lib/env/abort
unreachable
@ -2018,16 +2024,21 @@
i32.add
i32.store offset=4
end
i32.const 0
set_local $5
get_local $3
get_local $1
i32.const 2
i32.shl
i32.add
get_local $5
i32.add
get_local $2
i32.store offset=8
)
(func $~lib/array/Array<i64>#__get (; 10 ;) (type $iiI) (param $0 i32) (param $1 i32) (result i64)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -2038,11 +2049,15 @@
i32.shr_u
i32.lt_u
if (result i64)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 3
i32.shl
i32.add
get_local $3
i32.add
i64.load offset=8
else
unreachable
@ -2051,6 +2066,7 @@
(func $~lib/array/Array<i64>#__set (; 11 ;) (type $iiIv) (param $0 i32) (param $1 i32) (param $2 i64)
(local $3 i32)
(local $4 i32)
(local $5 i32)
get_local $0
i32.load
set_local $3
@ -2069,7 +2085,7 @@
if
i32.const 0
i32.const 184
i32.const 109
i32.const 110
i32.const 41
call $~lib/env/abort
unreachable
@ -2091,16 +2107,21 @@
i32.add
i32.store offset=4
end
i32.const 0
set_local $5
get_local $3
get_local $1
i32.const 3
i32.shl
i32.add
get_local $5
i32.add
get_local $2
i64.store offset=8
)
(func $~lib/array/Array<f32>#__get (; 12 ;) (type $iif) (param $0 i32) (param $1 i32) (result f32)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -2111,11 +2132,15 @@
i32.shr_u
i32.lt_u
if (result f32)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 2
i32.shl
i32.add
get_local $3
i32.add
f32.load offset=8
else
unreachable
@ -2124,6 +2149,7 @@
(func $~lib/array/Array<f32>#__set (; 13 ;) (type $iifv) (param $0 i32) (param $1 i32) (param $2 f32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
get_local $0
i32.load
set_local $3
@ -2142,7 +2168,7 @@
if
i32.const 0
i32.const 184
i32.const 109
i32.const 110
i32.const 41
call $~lib/env/abort
unreachable
@ -2164,16 +2190,21 @@
i32.add
i32.store offset=4
end
i32.const 0
set_local $5
get_local $3
get_local $1
i32.const 2
i32.shl
i32.add
get_local $5
i32.add
get_local $2
f32.store offset=8
)
(func $~lib/array/Array<f64>#__get (; 14 ;) (type $iiF) (param $0 i32) (param $1 i32) (result f64)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -2184,11 +2215,15 @@
i32.shr_u
i32.lt_u
if (result f64)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 3
i32.shl
i32.add
get_local $3
i32.add
f64.load offset=8
else
unreachable
@ -2197,6 +2232,7 @@
(func $~lib/array/Array<f64>#__set (; 15 ;) (type $iiFv) (param $0 i32) (param $1 i32) (param $2 f64)
(local $3 i32)
(local $4 i32)
(local $5 i32)
get_local $0
i32.load
set_local $3
@ -2215,7 +2251,7 @@
if
i32.const 0
i32.const 184
i32.const 109
i32.const 110
i32.const 41
call $~lib/env/abort
unreachable
@ -2237,11 +2273,15 @@
i32.add
i32.store offset=4
end
i32.const 0
set_local $5
get_local $3
get_local $1
i32.const 3
i32.shl
i32.add
get_local $5
i32.add
get_local $2
f64.store offset=8
)

View File

@ -3304,7 +3304,7 @@
if
i32.const 0
i32.const 976
i32.const 45
i32.const 46
i32.const 39
call $~lib/env/abort
unreachable
@ -3452,7 +3452,7 @@
if
i32.const 0
i32.const 976
i32.const 184
i32.const 185
i32.const 42
call $~lib/env/abort
unreachable
@ -3469,10 +3469,10 @@
get_local $0
get_local $3
i32.store offset=4
get_local $4
get_local $2
i32.const 2
i32.shl
get_local $4
i32.add
get_local $1
i32.store offset=8
@ -3787,20 +3787,20 @@
i32.shl
get_local $0
i32.add
get_local $3
get_local $4
i32.const 100
i32.div_u
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
get_local $3
get_local $4
i32.const 100
i32.rem_u
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
i64.const 32
@ -3830,10 +3830,10 @@
i32.shl
get_local $0
i32.add
get_local $3
get_local $4
i32.const 2
i32.shl
get_local $3
i32.add
i32.load offset=8
i32.store offset=4
@ -3849,10 +3849,10 @@
i32.shl
get_local $0
i32.add
get_local $3
get_local $1
i32.const 2
i32.shl
get_local $3
i32.add
i32.load offset=8
i32.store offset=4
@ -4022,6 +4022,7 @@
i32.shl
get_local $0
i32.add
get_local $3
get_local $4
i32.const 10000
i32.rem_u
@ -4030,15 +4031,14 @@
i32.div_u
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
get_local $3
get_local $4
i32.const 100
i32.rem_u
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
i64.const 32
@ -4053,16 +4053,16 @@
i32.shl
get_local $0
i32.add
get_local $3
get_local $6
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
get_local $3
get_local $5
i32.const 2
i32.shl
get_local $3
i32.add
i64.load32_u offset=8
i64.const 32
@ -4374,10 +4374,10 @@
get_local $9
i32.add
set_global $~lib/internal/number/_K
get_local $12
get_local $9
i32.const 2
i32.shl
get_local $12
i32.add
i64.load32_u offset=8
get_local $11
@ -4503,12 +4503,12 @@
get_local $9
i32.add
set_global $~lib/internal/number/_K
get_local $12
i32.const 0
get_local $9
i32.sub
i32.const 2
i32.shl
get_local $12
i32.add
i64.load32_u offset=8
get_local $8
@ -4521,9 +4521,9 @@
i32.shl
get_local $0
i32.add
tee_local $4
tee_local $7
i32.load16_u offset=4
set_local $7
set_local $4
loop $continue|4
get_local $1
get_local $8
@ -4561,10 +4561,10 @@
end
get_local $2
if
get_local $7
get_local $4
i32.const 1
i32.sub
set_local $7
set_local $4
get_local $1
get_local $10
i64.add
@ -4572,8 +4572,8 @@
br $continue|4
end
end
get_local $4
get_local $7
get_local $4
i32.store16 offset=4
get_local $6
else
@ -4979,10 +4979,10 @@
i32.add
i64.load offset=8
set_global $~lib/internal/number/_frc_pow
get_local $4
get_local $5
i32.const 1
i32.shl
get_local $4
i32.add
i32.load16_s offset=8
set_global $~lib/internal/number/_exp_pow

View File

@ -4103,7 +4103,7 @@
if
i32.const 0
i32.const 976
i32.const 45
i32.const 46
i32.const 39
call $~lib/env/abort
unreachable
@ -4153,14 +4153,19 @@
)
(func $~lib/array/Array<String>#__unchecked_set (; 39 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
get_local $0
i32.load
set_local $3
i32.const 0
set_local $4
get_local $3
get_local $1
i32.const 2
i32.shl
i32.add
get_local $4
i32.add
get_local $2
i32.store offset=8
)
@ -4279,6 +4284,7 @@
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
get_local $0
i32.load offset=4
set_local $2
@ -4304,7 +4310,7 @@
if
i32.const 0
i32.const 976
i32.const 184
i32.const 185
i32.const 42
call $~lib/env/abort
unreachable
@ -4322,11 +4328,15 @@
get_local $0
get_local $5
i32.store offset=4
i32.const 0
set_local $6
get_local $3
get_local $2
i32.const 2
i32.shl
i32.add
get_local $6
i32.add
get_local $1
i32.store offset=8
get_local $5
@ -4344,6 +4354,7 @@
(local $12 i32)
(local $13 i32)
(local $14 i32)
(local $15 i32)
get_local $0
i32.const 0
i32.ne
@ -4442,11 +4453,15 @@
i32.add
i32.load16_u offset=4
i32.store16 offset=4
i32.const 0
set_local $9
get_local $6
get_local $7
i32.const 2
i32.shl
i32.add
get_local $9
i32.add
get_local $8
i32.store offset=8
end
@ -4472,26 +4487,26 @@
i32.const 0
i32.const 0
call $~lib/array/Array<String>#constructor
set_local $9
i32.const 0
set_local $10
i32.const 0
set_local $11
i32.const 0
set_local $12
i32.const 0
set_local $13
block $break|1
loop $continue|1
get_local $0
get_local $1
get_local $11
get_local $12
call $~lib/string/String#indexOf
tee_local $10
tee_local $11
i32.const -1
i32.ne
if
block
get_local $10
get_local $11
get_local $12
i32.sub
set_local $6
get_local $6
@ -4504,82 +4519,82 @@
get_local $3
i32.const 0
get_local $0
get_local $11
get_local $12
get_local $6
call $~lib/internal/string/copyUnsafe
get_local $9
get_local $10
get_local $3
call $~lib/array/Array<String>#push
drop
else
get_local $9
get_local $10
i32.const 256
call $~lib/array/Array<String>#push
drop
end
get_local $12
get_local $13
i32.const 1
i32.add
tee_local $12
tee_local $13
get_local $2
i32.eq
if
get_local $9
get_local $10
return
end
get_local $10
get_local $11
get_local $5
i32.add
set_local $11
set_local $12
end
br $continue|1
end
end
end
get_local $11
get_local $12
i32.eqz
if
block (result i32)
i32.const 0
i32.const 1
call $~lib/array/Array<String>#constructor
set_local $13
get_local $13
set_local $14
get_local $14
i32.const 0
get_local $0
call $~lib/array/Array<String>#__unchecked_set
get_local $13
get_local $14
end
return
end
get_local $4
get_local $11
get_local $12
i32.sub
set_local $14
get_local $14
set_local $15
get_local $15
i32.const 0
i32.gt_s
if
get_local $14
get_local $15
call $~lib/internal/string/allocateUnsafe
set_local $13
get_local $13
set_local $14
get_local $14
i32.const 0
get_local $0
get_local $11
get_local $14
get_local $12
get_local $15
call $~lib/internal/string/copyUnsafe
get_local $9
get_local $13
get_local $10
get_local $14
call $~lib/array/Array<String>#push
drop
else
get_local $9
get_local $10
i32.const 256
call $~lib/array/Array<String>#push
drop
end
get_local $9
get_local $10
)
(func $~lib/string/String#split|trampoline (; 43 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
block $2of2
@ -4604,6 +4619,7 @@
)
(func $~lib/array/Array<String>#__get (; 44 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
get_local $0
i32.load
set_local $2
@ -4614,11 +4630,15 @@
i32.shr_u
i32.lt_u
if (result i32)
i32.const 0
set_local $3
get_local $2
get_local $1
i32.const 2
i32.shl
i32.add
get_local $3
i32.add
i32.load offset=8
else
unreachable
@ -4699,8 +4719,9 @@
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i64)
(local $8 i32)
(local $9 i64)
(local $10 i64)
block $~lib/internal/number/DIGITS|inlined.0 (result i32)
i32.const 1720
end
@ -4731,24 +4752,32 @@
i32.const 100
i32.rem_u
set_local $7
block $~lib/internal/arraybuffer/loadUnsafe<u32,u64>|inlined.0 (result i64)
block $~lib/internal/arraybuffer/LOAD<u32,u64>|inlined.0 (result i64)
i32.const 0
set_local $8
get_local $3
get_local $6
i32.const 2
i32.shl
i32.add
get_local $8
i32.add
i64.load32_u offset=8
end
set_local $8
block $~lib/internal/arraybuffer/loadUnsafe<u32,u64>|inlined.1 (result i64)
set_local $9
block $~lib/internal/arraybuffer/LOAD<u32,u64>|inlined.1 (result i64)
i32.const 0
set_local $8
get_local $3
get_local $7
i32.const 2
i32.shl
i32.add
get_local $8
i32.add
i64.load32_u offset=8
end
set_local $9
set_local $10
get_local $2
i32.const 4
i32.sub
@ -4758,8 +4787,8 @@
i32.const 1
i32.shl
i32.add
get_local $8
get_local $9
get_local $10
i64.const 32
i64.shl
i64.or
@ -4787,12 +4816,16 @@
i32.const 2
i32.sub
set_local $2
block $~lib/internal/arraybuffer/loadUnsafe<u32,u32>|inlined.0 (result i32)
block $~lib/internal/arraybuffer/LOAD<u32,u32>|inlined.0 (result i32)
i32.const 0
set_local $5
get_local $3
get_local $6
i32.const 2
i32.shl
i32.add
get_local $5
i32.add
i32.load offset=8
end
set_local $5
@ -4812,12 +4845,16 @@
i32.const 2
i32.sub
set_local $2
block $~lib/internal/arraybuffer/loadUnsafe<u32,u32>|inlined.1 (result i32)
block $~lib/internal/arraybuffer/LOAD<u32,u32>|inlined.1 (result i32)
i32.const 0
set_local $5
get_local $3
get_local $1
i32.const 2
i32.shl
i32.add
get_local $5
i32.add
i32.load offset=8
end
set_local $5
@ -4987,8 +5024,9 @@
(local $9 i32)
(local $10 i32)
(local $11 i32)
(local $12 i64)
(local $12 i32)
(local $13 i64)
(local $14 i64)
block $~lib/internal/number/DIGITS|inlined.1 (result i32)
i32.const 2512
end
@ -5038,24 +5076,32 @@
i32.const 100
i32.rem_u
set_local $11
block $~lib/internal/arraybuffer/loadUnsafe<u32,u64>|inlined.2 (result i64)
block $~lib/internal/arraybuffer/LOAD<u32,u64>|inlined.2 (result i64)
i32.const 0
set_local $12
get_local $3
get_local $10
i32.const 2
i32.shl
i32.add
get_local $12
i32.add
i64.load32_u offset=8
end
set_local $12
block $~lib/internal/arraybuffer/loadUnsafe<u32,u64>|inlined.3 (result i64)
set_local $13
block $~lib/internal/arraybuffer/LOAD<u32,u64>|inlined.3 (result i64)
i32.const 0
set_local $12
get_local $3
get_local $11
i32.const 2
i32.shl
i32.add
get_local $12
i32.add
i64.load32_u offset=8
end
set_local $13
set_local $14
get_local $2
i32.const 4
i32.sub
@ -5065,30 +5111,38 @@
i32.const 1
i32.shl
i32.add
get_local $12
get_local $13
get_local $14
i64.const 32
i64.shl
i64.or
i64.store offset=4
block $~lib/internal/arraybuffer/loadUnsafe<u32,u64>|inlined.4 (result i64)
block $~lib/internal/arraybuffer/LOAD<u32,u64>|inlined.4 (result i64)
i32.const 0
set_local $12
get_local $3
get_local $8
i32.const 2
i32.shl
i32.add
get_local $12
i32.add
i64.load32_u offset=8
end
set_local $12
block $~lib/internal/arraybuffer/loadUnsafe<u32,u64>|inlined.5 (result i64)
set_local $13
block $~lib/internal/arraybuffer/LOAD<u32,u64>|inlined.5 (result i64)
i32.const 0
set_local $12
get_local $3
get_local $9
i32.const 2
i32.shl
i32.add
get_local $12
i32.add
i64.load32_u offset=8
end
set_local $13
set_local $14
get_local $2
i32.const 4
i32.sub
@ -5098,8 +5152,8 @@
i32.const 1
i32.shl
i32.add
get_local $12
get_local $13
get_local $14
i64.const 32
i64.shl
i64.or
@ -5539,12 +5593,16 @@
get_local $14
i32.add
set_global $~lib/internal/number/_K
block $~lib/internal/arraybuffer/loadUnsafe<u32,u64>|inlined.6 (result i64)
block $~lib/internal/arraybuffer/LOAD<u32,u64>|inlined.6 (result i64)
i32.const 0
set_local $18
get_local $16
get_local $14
i32.const 2
i32.shl
i32.add
get_local $18
i32.add
i64.load32_u offset=8
end
get_local $7
@ -5689,16 +5747,20 @@
i32.add
set_global $~lib/internal/number/_K
get_local $10
block $~lib/internal/arraybuffer/loadUnsafe<u32,u64>|inlined.7 (result i64)
block $~lib/internal/arraybuffer/LOAD<u32,u64>|inlined.7 (result i64)
i32.const 0
get_local $14
i32.sub
set_local $17
i32.const 0
set_local $21
get_local $16
get_local $17
i32.const 2
i32.shl
i32.add
get_local $21
i32.add
i64.load32_u offset=8
end
i64.mul
@ -5710,10 +5772,10 @@
i32.const 1
i32.shl
i32.add
set_local $17
get_local $17
i32.load16_u offset=4
set_local $21
get_local $21
i32.load16_u offset=4
set_local $17
block $break|4
loop $continue|4
get_local $13
@ -5755,10 +5817,10 @@
end
if
block
get_local $21
get_local $17
i32.const 1
i32.sub
set_local $21
set_local $17
get_local $13
get_local $8
i64.add
@ -5768,8 +5830,8 @@
end
end
end
get_local $17
get_local $21
get_local $17
i32.store16 offset=4
get_local $15
return
@ -6138,7 +6200,7 @@
(local $11 f64)
(local $12 i32)
(local $13 i32)
(local $14 i64)
(local $14 i32)
(local $15 i64)
(local $16 i64)
(local $17 i64)
@ -6148,7 +6210,8 @@
(local $21 i64)
(local $22 i64)
(local $23 i64)
(local $24 i32)
(local $24 i64)
(local $25 i32)
get_local $1
f64.const 0
f64.lt
@ -6290,21 +6353,29 @@
end
i32.load
set_local $13
block $~lib/internal/arraybuffer/loadUnsafe<u64,u64>|inlined.0 (result i64)
block $~lib/internal/arraybuffer/LOAD<u64,u64>|inlined.0 (result i64)
i32.const 0
set_local $14
get_local $12
get_local $8
i32.const 3
i32.shl
i32.add
get_local $14
i32.add
i64.load offset=8
end
set_global $~lib/internal/number/_frc_pow
block $~lib/internal/arraybuffer/loadUnsafe<i16,i32>|inlined.0 (result i32)
block $~lib/internal/arraybuffer/LOAD<i16,i32>|inlined.0 (result i32)
i32.const 0
set_local $14
get_local $13
get_local $8
i32.const 1
i32.shl
i32.add
get_local $14
i32.add
i32.load16_s offset=8
end
set_global $~lib/internal/number/_exp_pow
@ -6330,60 +6401,60 @@
get_local $6
i64.const 4294967295
i64.and
set_local $14
set_local $15
get_local $7
i64.const 4294967295
i64.and
set_local $15
set_local $16
get_local $6
i64.const 32
i64.shr_u
set_local $16
set_local $17
get_local $7
i64.const 32
i64.shr_u
set_local $17
get_local $14
get_local $15
i64.mul
set_local $18
get_local $16
get_local $15
get_local $16
i64.mul
get_local $18
set_local $19
get_local $17
get_local $16
i64.mul
get_local $19
i64.const 32
i64.shr_u
i64.add
set_local $19
get_local $14
get_local $17
set_local $20
get_local $15
get_local $18
i64.mul
get_local $19
get_local $20
i64.const 4294967295
i64.and
i64.add
set_local $20
get_local $20
set_local $21
get_local $21
i64.const 2147483647
i64.add
set_local $20
get_local $19
i64.const 32
i64.shr_u
set_local $19
set_local $21
get_local $20
i64.const 32
i64.shr_u
set_local $20
get_local $16
get_local $21
i64.const 32
i64.shr_u
set_local $21
get_local $17
get_local $18
i64.mul
get_local $19
i64.add
get_local $20
i64.add
get_local $21
i64.add
end
set_local $20
set_local $21
block $~lib/internal/number/umul64e|inlined.0 (result i32)
get_local $4
get_local $12
@ -6394,66 +6465,66 @@
set_local $8
block $~lib/internal/number/umul64f|inlined.1 (result i64)
get_global $~lib/internal/number/_frc_plus
set_local $20
get_local $20
i64.const 4294967295
i64.and
set_local $19
get_local $19
get_local $7
i64.const 4294967295
i64.and
set_local $18
get_local $7
i64.const 4294967295
i64.and
get_local $20
i64.const 32
i64.shr_u
set_local $17
get_local $19
get_local $7
i64.const 32
i64.shr_u
set_local $16
get_local $7
i64.const 32
i64.shr_u
set_local $15
get_local $19
get_local $18
get_local $17
i64.mul
set_local $14
get_local $16
set_local $15
get_local $17
get_local $18
i64.mul
get_local $14
get_local $15
i64.const 32
i64.shr_u
i64.add
set_local $21
get_local $18
get_local $15
set_local $22
get_local $19
get_local $16
i64.mul
get_local $21
get_local $22
i64.const 4294967295
i64.and
i64.add
set_local $22
get_local $22
set_local $23
get_local $23
i64.const 2147483647
i64.add
set_local $22
get_local $21
i64.const 32
i64.shr_u
set_local $21
set_local $23
get_local $22
i64.const 32
i64.shr_u
set_local $22
get_local $23
i64.const 32
i64.shr_u
set_local $23
get_local $17
get_local $16
get_local $15
i64.mul
get_local $21
i64.add
get_local $22
i64.add
get_local $23
i64.add
end
i64.const 1
i64.sub
set_local $22
set_local $23
block $~lib/internal/number/umul64e|inlined.1 (result i32)
get_global $~lib/internal/number/_exp
set_local $9
@ -6466,92 +6537,92 @@
set_local $9
block $~lib/internal/number/umul64f|inlined.2 (result i64)
get_global $~lib/internal/number/_frc_minus
set_local $21
get_local $21
i64.const 4294967295
i64.and
set_local $14
get_local $7
set_local $22
get_local $22
i64.const 4294967295
i64.and
set_local $15
get_local $21
i64.const 32
i64.shr_u
set_local $16
get_local $7
i64.const 4294967295
i64.and
set_local $16
get_local $22
i64.const 32
i64.shr_u
set_local $17
get_local $14
get_local $15
i64.mul
get_local $7
i64.const 32
i64.shr_u
set_local $18
get_local $16
get_local $15
get_local $16
i64.mul
get_local $18
set_local $19
get_local $17
get_local $16
i64.mul
get_local $19
i64.const 32
i64.shr_u
i64.add
set_local $19
get_local $14
get_local $17
set_local $20
get_local $15
get_local $18
i64.mul
get_local $19
get_local $20
i64.const 4294967295
i64.and
i64.add
set_local $23
get_local $23
set_local $24
get_local $24
i64.const 2147483647
i64.add
set_local $23
get_local $19
set_local $24
get_local $20
i64.const 32
i64.shr_u
set_local $19
get_local $23
set_local $20
get_local $24
i64.const 32
i64.shr_u
set_local $23
get_local $16
set_local $24
get_local $17
get_local $18
i64.mul
get_local $19
get_local $20
i64.add
get_local $23
get_local $24
i64.add
end
i64.const 1
i64.add
set_local $23
get_local $22
set_local $24
get_local $23
get_local $24
i64.sub
set_local $19
set_local $20
get_local $0
get_local $20
get_local $21
get_local $8
get_local $22
get_local $23
get_local $9
get_local $19
get_local $20
get_local $2
call $~lib/internal/number/genDigits
end
set_local $24
set_local $25
get_local $0
get_local $2
i32.const 1
i32.shl
i32.add
get_local $24
get_local $25
get_local $2
i32.sub
get_global $~lib/internal/number/_K
call $~lib/internal/number/prettify
set_local $24
get_local $24
set_local $25
get_local $25
get_local $2
i32.add
)

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,6 @@ assert(Uint64Array.BYTES_PER_ELEMENT == 8);
assert(Float32Array.BYTES_PER_ELEMENT == 4);
assert(Float64Array.BYTES_PER_ELEMENT == 8);
function isInt8ArrayEqual(a: Int8Array, b: Array<i8>): bool {
if (a.length != b.length) return false;
for (let i = 0, len = a.length; i < len; i++) {

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
class A {
[key: i32]: f64;
}

View File

@ -0,0 +1,3 @@
class A {
[key: i32]: f64;
}

View File

@ -0,0 +1,3 @@
function a<T=i32>(): T { return 0; }
function a<T,U=i32>(): T { return 0; }
function a<T,U=i32,V>(): T { return 0; } // ERROR 2706

View File

@ -0,0 +1,10 @@
function a<T=i32>(): T {
return 0;
}
function a<T, U=i32>(): T {
return 0;
}
function a<T, U=i32, V>(): T {
return 0;
}
// ERROR 2706: "Required type parameters may not follow optional type parameters." in optional-typeparameters.ts:3:19