diff options
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) {} + } + } +})(); |