Add TypedArray#fill (#274)

This commit is contained in:
Max Graey
2018-10-26 19:28:31 +03:00
committed by Daniel Wirtz
parent afb8fe7762
commit 83fa12164f
10 changed files with 4816 additions and 2062 deletions

File diff suppressed because it is too large Load Diff

View File

@ -44,6 +44,9 @@ assert(isArraysEqual<u8>(arr8, <u8[]>[1, 1, 0, 0, 0]));
arr8.fill(2, -2);
assert(isArraysEqual<u8>(arr8, <u8[]>[1, 1, 0, 2, 2]));
arr8.fill(0, 1, 0);
assert(isArraysEqual<u8>(arr8, <u8[]>[1, 1, 0, 2, 2]));
var arr32: u32[] = [1, 2, 3, 4, 5];
arr32.fill(1, 1, 3);
@ -58,6 +61,9 @@ assert(isArraysEqual<u32>(arr32, <u32[]>[1, 1, 0, 0, 0]));
arr32.fill(2, -2);
assert(isArraysEqual<u32>(arr32, <u32[]>[1, 1, 0, 2, 2]));
arr32.fill(0, 1, 0);
assert(isArraysEqual<u32>(arr32, <u32[]>[1, 1, 0, 2, 2]));
// Array#push/pop //////////////////////////////////////////////////////////////////////////////////
assert(arr.length == 0);

File diff suppressed because it is too large Load Diff

View File

@ -4905,7 +4905,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 776)
(i32.const 172)
(i32.const 174)
(i32.const 42)
)
(unreachable)

View File

@ -5893,7 +5893,7 @@
(call $~lib/env/abort
(i32.const 0)
(i32.const 776)
(i32.const 172)
(i32.const 174)
(i32.const 42)
)
(unreachable)

File diff suppressed because it is too large Load Diff

View File

@ -10,6 +10,23 @@ 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++) {
if (a[i] != b[i]) return false;
}
return true;
}
function isInt32ArrayEqual(a: Int32Array, b: Array<i32>): bool {
if (a.length != b.length) return false;
for (let i = 0, len = a.length; i < len; i++) {
if (a[i] != b[i]) return false;
}
return true;
}
import "allocator/arena";
function testInstantiate(len: i32): void {
@ -115,6 +132,62 @@ assert(clampedArr[0] == 0);
assert(clampedArr[1] == 2);
assert(clampedArr[2] == 255);
var arr8 = new Int8Array(5);
arr8[0] = 1;
arr8[1] = 2;
arr8[2] = 3;
arr8[3] = 4;
arr8[4] = 5;
arr8.fill(1, 1, 3);
assert(isInt8ArrayEqual(arr8, <i8[]>[1, 1, 1, 4, 5]));
arr8.fill(0);
assert(isInt8ArrayEqual(arr8, <i8[]>[0, 0, 0, 0, 0]));
arr8.fill(1, 0, -3);
assert(isInt8ArrayEqual(arr8, <i8[]>[1, 1, 0, 0, 0]));
arr8.fill(2, -2);
assert(isInt8ArrayEqual(arr8, <i8[]>[1, 1, 0, 2, 2]));
arr8.fill(0, 1, 0);
assert(isInt8ArrayEqual(arr8, <i8[]>[1, 1, 0, 2, 2]));
var sub8 = arr8.subarray(1, 4);
sub8.fill(0);
assert(sub8.length == 3);
assert(isInt8ArrayEqual(sub8, <i8[]>[0, 0, 0]));
assert(isInt8ArrayEqual(arr8, <i8[]>[1, 0, 0, 0, 2]));
var arr32 = new Int32Array(5);
arr32[0] = 1;
arr32[1] = 2;
arr32[2] = 3;
arr32[3] = 4;
arr32[4] = 5;
arr32.fill(1, 1, 3);
assert(isInt32ArrayEqual(arr32, <i32[]>[1, 1, 1, 4, 5]));
arr32.fill(0);
assert(isInt32ArrayEqual(arr32, <i32[]>[0, 0, 0, 0, 0]));
arr32.fill(1, 0, -3);
assert(isInt32ArrayEqual(arr32, <i32[]>[1, 1, 0, 0, 0]));
arr32.fill(2, -2);
assert(isInt32ArrayEqual(arr32, <i32[]>[1, 1, 0, 2, 2]));
arr32.fill(0, 1, 0);
assert(isInt32ArrayEqual(arr32, <i32[]>[1, 1, 0, 2, 2]));
var sub32 = arr32.subarray(1, 4);
sub32.fill(0);
assert(sub32.length == 3);
assert(isInt32ArrayEqual(sub32, <i32[]>[0, 0, 0]));
assert(isInt32ArrayEqual(arr32, <i32[]>[1, 0, 0, 0, 2]));
import { MAX_BLENGTH } from "internal/arraybuffer";
const MAX_F64LENGTH = <u32>MAX_BLENGTH >> alignof<f64>();

File diff suppressed because it is too large Load Diff