This commit is contained in:
dcode 2019-05-25 15:07:42 +02:00
parent 33a892de44
commit bd9d77e151
3 changed files with 233 additions and 243 deletions

View File

@ -956,11 +956,10 @@ function SUBARRAY<TArray extends ArrayBufferView, T>(
begin: i32,
end: i32
): TArray {
var length = <i32>array.length;
if (begin < 0) begin = max(length + begin, 0);
else begin = min(begin, length);
if (end < 0) end = max(length + end, begin);
else end = max(min(end, length), begin);
var len = <i32>array.length;
begin = begin < 0 ? max(len + begin, 0) : min(begin, len);
end = end < 0 ? max(len + end, 0) : min(end, len);
end = max(end, begin);
var out = changetype<TArray>(__alloc(offsetof<TArray>(), idof<TArray>())); // retains
out.data = array.data; // retains
out.dataStart = array.dataStart + (<usize>begin << alignof<T>());

View File

@ -2246,9 +2246,9 @@
local.get $3
i32.add
local.tee $1
local.get $0
i32.const 0
local.get $1
local.get $0
i32.const 0
i32.gt_s
select
else
@ -2258,12 +2258,6 @@
local.get $3
i32.lt_s
select
local.tee $1
local.get $0
local.get $1
local.get $0
i32.gt_s
select
end
local.set $2
i32.const 12
@ -2288,6 +2282,11 @@
local.get $1
local.get $2
local.get $0
local.get $2
local.get $0
i32.gt_s
select
local.get $0
i32.sub
i32.const 2
i32.shl
@ -2375,9 +2374,9 @@
local.get $3
i32.add
local.tee $1
local.get $0
i32.const 0
local.get $1
local.get $0
i32.const 0
i32.gt_s
select
else
@ -2387,12 +2386,6 @@
local.get $3
i32.lt_s
select
local.tee $1
local.get $0
local.get $1
local.get $0
i32.gt_s
select
end
local.set $2
i32.const 12
@ -2417,6 +2410,11 @@
local.get $1
local.get $2
local.get $0
local.get $2
local.get $0
i32.gt_s
select
local.get $0
i32.sub
i32.const 3
i32.shl
@ -3462,9 +3460,9 @@
local.get $3
i32.add
local.tee $1
local.get $0
i32.const 0
local.get $1
local.get $0
i32.const 0
i32.gt_s
select
else
@ -3474,12 +3472,6 @@
local.get $3
i32.lt_s
select
local.tee $1
local.get $0
local.get $1
local.get $0
i32.gt_s
select
end
local.set $2
i32.const 12
@ -3502,6 +3494,11 @@
local.get $1
local.get $2
local.get $0
local.get $2
local.get $0
i32.gt_s
select
local.get $0
i32.sub
i32.store offset=8
local.get $4
@ -11973,17 +11970,11 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
i32.const 8
local.get $0
call $~lib/rt/pure/__retain
local.tee $2
i32.load offset=8
local.tee $1
i32.const 8
local.get $1
i32.lt_s
select
local.set $3
local.set $1
i32.const 12
i32.const 4
call $~lib/rt/tlsf/__alloc
@ -12002,29 +11993,35 @@
local.get $1
i32.lt_s
select
local.tee $1
local.tee $3
local.get $2
i32.load offset=4
i32.add
i32.store offset=4
local.get $0
i32.const 8
local.get $1
i32.const 8
local.get $1
i32.lt_s
select
local.tee $1
local.get $3
local.get $1
local.get $3
local.get $1
i32.gt_s
select
local.get $1
local.get $3
i32.sub
i32.store offset=8
local.get $2
call $~lib/rt/pure/__release
local.get $0
call $~lib/rt/pure/__retain
local.set $2
local.set $1
local.get $0
call $~lib/rt/pure/__release
local.get $2
local.get $1
)
(func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 263 ;) (type $FUNCSIG$v)
(local $0 i32)
@ -12190,17 +12187,11 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
i32.const 8
local.get $0
call $~lib/rt/pure/__retain
local.tee $2
i32.load offset=8
local.tee $1
i32.const 8
local.get $1
i32.lt_s
select
local.set $3
local.set $1
i32.const 12
i32.const 5
call $~lib/rt/tlsf/__alloc
@ -12219,29 +12210,35 @@
local.get $1
i32.lt_s
select
local.tee $1
local.tee $3
local.get $2
i32.load offset=4
i32.add
i32.store offset=4
local.get $0
i32.const 8
local.get $1
i32.const 8
local.get $1
i32.lt_s
select
local.tee $1
local.get $3
local.get $1
local.get $3
local.get $1
i32.gt_s
select
local.get $1
local.get $3
i32.sub
i32.store offset=8
local.get $2
call $~lib/rt/pure/__release
local.get $0
call $~lib/rt/pure/__retain
local.set $2
local.set $1
local.get $0
call $~lib/rt/pure/__release
local.get $2
local.get $1
)
(func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 265 ;) (type $FUNCSIG$v)
(local $0 i32)
@ -12486,12 +12483,6 @@
local.get $1
i32.lt_s
select
local.tee $1
local.get $0
local.get $1
local.get $0
i32.gt_s
select
local.set $3
i32.const 12
i32.const 6
@ -12515,6 +12506,11 @@
local.get $1
local.get $3
local.get $0
local.get $3
local.get $0
i32.gt_s
select
local.get $0
i32.sub
i32.const 1
i32.shl
@ -12777,12 +12773,6 @@
local.get $1
i32.lt_s
select
local.tee $1
local.get $0
local.get $1
local.get $0
i32.gt_s
select
local.set $3
i32.const 12
i32.const 7
@ -12806,6 +12796,11 @@
local.get $1
local.get $3
local.get $0
local.get $3
local.get $0
i32.gt_s
select
local.get $0
i32.sub
i32.const 1
i32.shl
@ -13218,12 +13213,6 @@
local.get $1
i32.lt_s
select
local.tee $1
local.get $0
local.get $1
local.get $0
i32.gt_s
select
local.set $3
i32.const 12
i32.const 9
@ -13247,6 +13236,11 @@
local.get $1
local.get $3
local.get $0
local.get $3
local.get $0
i32.gt_s
select
local.get $0
i32.sub
i32.const 2
i32.shl
@ -13497,12 +13491,6 @@
local.get $1
i32.lt_s
select
local.tee $1
local.get $0
local.get $1
local.get $0
i32.gt_s
select
local.set $3
i32.const 12
i32.const 10
@ -13526,6 +13514,11 @@
local.get $1
local.get $3
local.get $0
local.get $3
local.get $0
i32.gt_s
select
local.get $0
i32.sub
i32.const 3
i32.shl
@ -13717,12 +13710,6 @@
local.get $1
i32.lt_s
select
local.tee $1
local.get $0
local.get $1
local.get $0
i32.gt_s
select
local.set $3
i32.const 12
i32.const 11
@ -13746,6 +13733,11 @@
local.get $1
local.get $3
local.get $0
local.get $3
local.get $0
i32.gt_s
select
local.get $0
i32.sub
i32.const 3
i32.shl
@ -13999,12 +13991,6 @@
local.get $1
i32.lt_s
select
local.tee $1
local.get $0
local.get $1
local.get $0
i32.gt_s
select
local.set $3
i32.const 12
i32.const 12
@ -14028,6 +14014,11 @@
local.get $1
local.get $3
local.get $0
local.get $3
local.get $0
i32.gt_s
select
local.get $0
i32.sub
i32.const 2
i32.shl

View File

@ -4120,7 +4120,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -4131,7 +4131,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -4141,23 +4140,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -4167,15 +4165,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 8
call $~lib/rt/tlsf/__alloc
@ -4274,7 +4274,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -4285,7 +4285,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -4295,23 +4294,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -4321,15 +4319,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 13
call $~lib/rt/tlsf/__alloc
@ -5583,7 +5583,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -5594,7 +5594,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -5604,23 +5603,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -5630,15 +5628,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 3
call $~lib/rt/tlsf/__alloc
@ -18613,7 +18613,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -18624,7 +18624,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -18634,23 +18633,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -18660,15 +18658,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 4
call $~lib/rt/tlsf/__alloc
@ -18987,7 +18987,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -18998,7 +18998,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -19008,23 +19007,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -19034,15 +19032,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 5
call $~lib/rt/tlsf/__alloc
@ -19361,7 +19361,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -19372,7 +19372,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -19382,23 +19381,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -19408,15 +19406,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 6
call $~lib/rt/tlsf/__alloc
@ -19741,7 +19741,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -19752,7 +19752,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -19762,23 +19761,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -19788,15 +19786,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 7
call $~lib/rt/tlsf/__alloc
@ -20365,7 +20365,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -20376,7 +20376,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -20386,23 +20385,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -20412,15 +20410,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 9
call $~lib/rt/tlsf/__alloc
@ -20733,7 +20733,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -20744,7 +20744,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -20754,23 +20753,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -20780,15 +20778,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 10
call $~lib/rt/tlsf/__alloc
@ -21104,7 +21104,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -21115,7 +21115,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -21125,23 +21124,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -21151,15 +21149,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 11
call $~lib/rt/tlsf/__alloc
@ -21475,7 +21475,7 @@
local.get $4
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $4
i32.add
@ -21486,7 +21486,6 @@
local.get $8
i32.gt_s
select
local.set $4
else
local.get $4
local.tee $7
@ -21496,23 +21495,22 @@
local.get $8
i32.lt_s
select
local.set $4
end
local.set $4
local.get $3
i32.const 0
i32.lt_s
if
if (result i32)
local.get $6
local.get $3
i32.add
local.tee $7
local.get $4
i32.const 0
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
else
local.get $3
local.tee $7
@ -21522,15 +21520,17 @@
local.get $8
i32.lt_s
select
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
end
local.set $3
local.get $3
local.tee $7
local.get $4
local.tee $8
local.get $7
local.get $8
i32.gt_s
select
local.set $3
i32.const 12
i32.const 12
call $~lib/rt/tlsf/__alloc