summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/timeout/debug-interrupt-1.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/wasm/timeout/debug-interrupt-1.js')
-rw-r--r--js/src/jit-test/tests/wasm/timeout/debug-interrupt-1.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/timeout/debug-interrupt-1.js b/js/src/jit-test/tests/wasm/timeout/debug-interrupt-1.js
new file mode 100644
index 0000000000..940bde07a1
--- /dev/null
+++ b/js/src/jit-test/tests/wasm/timeout/debug-interrupt-1.js
@@ -0,0 +1,23 @@
+// |jit-test| exitstatus: 6; skip-if: !wasmDebuggingEnabled()
+
+// Don't include wasm.js in timeout tests: when wasm isn't supported, it will
+// quit(0) which will cause the test to fail.
+
+// Note: this test triggers an interrupt and then iloops in Wasm code. If the
+// interrupt fires before the Wasm code is compiled, the test relies on the
+// JS interrupt check in onEnterFrame to catch it. Warp/Ion code however can
+// elide the combined interrupt/overrecursion check in simple leaf functions.
+// Long story short, set the Warp threshold to a non-zero value to prevent
+// intermittent timeouts with --ion-eager.
+setJitCompilerOption("ion.warmup.trigger", 30);
+
+var g = newGlobal({newCompartment: true});
+g.parent = this;
+g.eval("Debugger(parent).onEnterFrame = function() {};");
+timeout(0.01);
+var code = wasmTextToBinary(`(module
+ (func (export "f1")
+ (loop $top br $top)
+ )
+)`);
+new WebAssembly.Instance(new WebAssembly.Module(code)).exports.f1();