Add SharedArrayBuffer support (#4689)
JerryScript-DCO-1.0-Signed-off-by: Gergo Csizi csgergo92@gmail.com
This commit is contained in:
@@ -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]");
|
||||
|
||||
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user