diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /js/src/jit-test/tests/ion/recover-autounsafe.js | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit-test/tests/ion/recover-autounsafe.js')
-rw-r--r-- | js/src/jit-test/tests/ion/recover-autounsafe.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/ion/recover-autounsafe.js b/js/src/jit-test/tests/ion/recover-autounsafe.js new file mode 100644 index 0000000000..e03b018ccc --- /dev/null +++ b/js/src/jit-test/tests/ion/recover-autounsafe.js @@ -0,0 +1,36 @@ +// |jit-test| --ion-eager; --ion-offthread-compile=off + +// Some AutoUnsafeCallWithABI functions can be reached via recovery instructions. +// This testcase is designed to trigger all of the recovery paths that can reach +// AutoUnsafeCallWithABI functions, while an exception is being thrown. + +(function() { + inputs = []; + f = (function(x) { + var o = {a: x}; + 4294967297 ** (x >>> 0) * + 4294967297 / x >>> 0 * + 4294967297 % x >>> 0 * + Math.max(4294967297, x >>> 0) * + Math.min(4294967, x >>> 0) * + Math.atan2(4294967, x >>> 0) * + Math.sin(x >>> 0) * + Math.sqrt(x >>> 0) * + Math.hypot(4294967, x >>> 0) * + Math.ceil((x >>> 0) * 0.5) * + Math.floor((x >>> 0) * 0.5) * + Math.trunc((x >>> 0) * 0.5) * + Math.round((x >>> 0) * 0.5) * + Math.sign(x >>> 0) * + Math.log(x >>> 0) * + !o * + Math.fround(y); // Exception thrown here; y is not defined. + }); + if (f) { + for (var j = 0; j < 2; ++j) { + try { + f(inputs[0]); + } catch (e) {} + } + } +})(); |