Add SharedArrayBuffer support (#4689)

JerryScript-DCO-1.0-Signed-off-by: Gergo Csizi csgergo92@gmail.com
This commit is contained in:
Gergo Csizi
2021-07-23 17:29:06 +02:00
committed by GitHub
parent bbf1c0105b
commit d9360f51d0
28 changed files with 1050 additions and 337 deletions
+1
View File
@@ -30,6 +30,7 @@ var builtin_objects = [
ReferenceError,
RegExp,
Set,
SharedArrayBuffer,
String,
Symbol,
SyntaxError,
@@ -45,6 +45,17 @@ assert (Object.prototype.toString.call (new ArrayBuffer ()) === "[object myStrin
ArrayBuffer.prototype[Symbol.toStringTag] = {};
assert (ArrayBuffer.prototype.toString.call (new ArrayBuffer ()) === "[object Object]");
/* SharedArrayBuffer.prototype @@toStringTag */
assert (SharedArrayBuffer.prototype[Symbol.toStringTag] === "SharedArrayBuffer");
assert (Object.prototype.toString.call (new SharedArrayBuffer ()) === "[object SharedArrayBuffer]");
assert (delete SharedArrayBuffer.prototype[Symbol.toStringTag]);
assert (SharedArrayBuffer.prototype[Symbol.toStringTag] === undefined);
SharedArrayBuffer.prototype[Symbol.toStringTag] = "myStringTag3";
assert (Object.prototype.toString.call (new SharedArrayBuffer ()) === "[object myStringTag3]");
SharedArrayBuffer.prototype[Symbol.toStringTag] = {};
assert (SharedArrayBuffer.prototype.toString.call (new SharedArrayBuffer ()) === "[object Object]");
/* Promise.prototype @@toStringTag */
assert (Promise.prototype[Symbol.toStringTag] === "Promise");
assert (Object.prototype.toString.call (new Promise (function () {})) === "[object Promise]");
+7 -3
View File
@@ -113,22 +113,26 @@ 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');
var cd = new SharedArrayBuffer(4);
var u8array = new Uint8Array(cd);
assert(u8array.fill(0).toString() === '0,0,0,0');
var invalid = {
valueOf: function() {
throw new Error();
}
};
var m = new BigInt64Array();
var n = new BigInt64Array();
try {
m.fill(1n, invalid);
n.fill(1n, invalid);
assert(false)
} catch (e) {
assert(e instanceof Error);
}
try {
m.fill(1n, 0, invalid);
n.fill(1n, 0, invalid);
assert(false)
} catch (e) {
assert(e instanceof Error);
@@ -46,3 +46,20 @@ assert(c.subarray(4, 1).toString() === '');
assert(c.subarray(-1, -4).toString() === '');
assert(c.subarray(1).subarray(1).toString() === '3,4,5');
assert(c.subarray(1, 4).subarray(1, 2).toString() === '3');
var cd = new SharedArrayBuffer(28);
tmp = new Int32Array(cd);
tmp.set([0, 1, 2, 3, 4, 5, 0]);
var d = new Int32Array(cd, 4, 5);
assert(d.subarray().toString() === '1,2,3,4,5');
assert(d.subarray(3).toString() === '4,5');
assert(d.subarray(1, 3).toString() === '2,3');
assert(d.subarray(1, 3).toString() === '2,3');
assert(d.subarray(-3).toString() === '3,4,5');
assert(d.subarray(-3, -1).toString() === '3,4');
assert(d.subarray(3, 2).toString() === '');
assert(d.subarray(-2, -3).toString() === '');
assert(d.subarray(4, 1).toString() === '');
assert(d.subarray(-1, -4).toString() === '');
assert(d.subarray(1).subarray(1).toString() === '3,4,5');
assert(d.subarray(1, 4).subarray(1, 2).toString() === '3');