Implement BigInt64 and BigUint64 typedArrays (#4151)

Also implemented ToBigInt conversion method based on ECMA-262 v11, 7.1.13

JerryScript-DCO-1.0-Signed-off-by: Adam Szilagyi aszilagy@inf.u-szeged.hu
This commit is contained in:
Szilagyi Adam
2020-08-24 18:03:12 +02:00
committed by GitHub
parent 55b6b1aed7
commit 85981457e6
29 changed files with 1028 additions and 733 deletions
@@ -13,4 +13,10 @@
// limitations under the License.
var a = new Uint8Array(2);
a[0] = { valueOf : function() { throw "intoint"; } };
try {
a[0] = { valueOf : function() { throw "intoint"; } };
assert(false);
} catch (e) {
assert(e === "intoint")
}
+9
View File
@@ -103,3 +103,12 @@ assert(h.toString() === '1,0,0,0');
var j = new Uint16Array(ab2, 2, 1);
assert(j.fill(1).toString() === '1');
assert(h.toString() === '1,0,1,0');
var k = new BigInt64Array([1n, 2n, 3n, 4n, 5n]);
assert(k.fill(1n, 1, 4).toString() === '1,1,1,1,5');
assert(k.fill(18446744073709551616n, 0, 5).toString() === '0,0,0,0,0');
assert(k.fill(-5n, 3, 5).toString() === '0,0,0,-5,-5');
var l = new BigUint64Array([1n, 2n, 3n, 4n, 5n]);
assert(l.fill(-18446744073709551614n, 3, 5).toString() === '1,2,3,2,2');
assert(l.fill(18446744073709551614n, 4).toString() === '1,2,3,2,18446744073709551614');
@@ -114,3 +114,17 @@ typedArrayTypes.forEach (function (TypedArray) {
// Checking behavior when there are more than 2 arguments
assert (array.findIndex (function (e) { return e < 2 }, {}, 8, 4, 5, 6, 6) === 0);
})
function isNegative(element, index, array) {
return element < 0;
}
function isBigger(element, index, array) {
return element > 40n;
}
var bigint_array = new BigInt64Array([10n, -20n, 30n, -40n, 50n]);
var biguint_array = new BigUint64Array([10n, 20n, 30n, 40n, 50n]);
assert(bigint_array.findIndex(isNegative) === 1);
assert(biguint_array.findIndex(isBigger) === 4);
@@ -72,3 +72,11 @@ typedarrays.forEach(function(e){
assert(e.copyWithin(3, Infinity, 5).toString() === '2,1,4,2,1,5');
assert(e.copyWithin(1, 3, -Infinity).toString() === '2,1,4,2,1,5');
});
var bigint_array = new BigInt64Array([1n, 2n, 3n, -4n, 5n]);
assert(bigint_array.copyWithin(2, 1, 4).toString() === '1,2,2,3,-4');
assert(bigint_array.copyWithin(0, 4).toString() === '-4,2,2,3,-4');
var biguint_array = new BigUint64Array([1n, 2n, 3n, 4n, 5n]);
assert(biguint_array.copyWithin(0, 2, 4).toString() === '3,4,3,4,5');
assert(biguint_array.copyWithin(-3, 0, 3).toString() === '3,4,3,4,3');
@@ -69,3 +69,13 @@ empty_typedarrays.forEach(function (e){
});
assert ([].entries ().toString () === "[object Array Iterator]");
var bigint_array = new BigInt64Array([1n, 2n, 3n, 4n]);
var entries = bigint_array.entries();
assert(entries.next().value[1] === 1n);
assert(entries.next().value[1] === 2n);
var biguint_array = new BigUint64Array([1n, 2n, 3n, 4n]);
var entries = biguint_array.entries();
assert(entries.next().value[1] === 1n);
assert(entries.next().value[1] === 2n);