diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /js/src/jit-test/tests/basic/testTypedArrayPunning.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit-test/tests/basic/testTypedArrayPunning.js')
-rw-r--r-- | js/src/jit-test/tests/basic/testTypedArrayPunning.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/basic/testTypedArrayPunning.js b/js/src/jit-test/tests/basic/testTypedArrayPunning.js new file mode 100644 index 0000000000..59f6b744fc --- /dev/null +++ b/js/src/jit-test/tests/basic/testTypedArrayPunning.js @@ -0,0 +1,42 @@ +function testNonCanonicalNan() +{ + const bytes = 128; + var buf = new ArrayBuffer(bytes); + + /* create an array of non-canonical double nans */ + var ui8arr = new Uint8Array(buf); + for (var i = 0; i < ui8arr.length; ++i) + ui8arr[i] = 0xff; + + var dblarr = new Float64Array(buf); + assertEq(dblarr.length, bytes / 8); + + /* ensure they are canonicalized */ + for (var i = 0; i < dblarr.length; ++i) { + var asstr = dblarr[i] + ""; + var asnum = dblarr[i] + 0.0; + assertEq(asstr, "NaN"); + assertEq(asnum, NaN); + } + + /* create an array of non-canonical float nans */ + for (var i = 0; i < ui8arr.length; i += 4) { + ui8arr[i+0] = 0xffff; + ui8arr[i+1] = 0xffff; + ui8arr[i+2] = 0xffff; + ui8arr[i+3] = 0xffff; + } + + var fltarr = new Float32Array(buf); + assertEq(fltarr.length, bytes / 4); + + /* ensure they are canonicalized */ + for (var i = 0; i < fltarr.length; ++i) { + var asstr = fltarr[i] + ""; + var asnum = fltarr[i] + 0.0; + assertEq(asstr, "NaN"); + assertEq(asnum, NaN); + } +} + +testNonCanonicalNan(); |