summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/profiler/bug1782003.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/profiler/bug1782003.js')
-rw-r--r--js/src/jit-test/tests/profiler/bug1782003.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/profiler/bug1782003.js b/js/src/jit-test/tests/profiler/bug1782003.js
new file mode 100644
index 0000000000..34219a7179
--- /dev/null
+++ b/js/src/jit-test/tests/profiler/bug1782003.js
@@ -0,0 +1,28 @@
+function getStack() {
+ enableGeckoProfiling();
+ let stack = readGeckoProfilingStack();
+ // The number of frames depends on JIT flags, but there must be at least
+ // one frame for the caller and at most 3 total (the global script, 'testFun'
+ // and 'getStack').
+ assertEq(stack.length > 0, true);
+ assertEq(stack.length <= 3, true);
+ assertEq(JSON.stringify(stack).includes('"testFun ('), true);
+ disableGeckoProfiling();
+}
+function testFun() {
+ // Loop until this is a JIT frame.
+ while (true) {
+ let isJitFrame = inJit();
+ if (typeof isJitFrame === "string") {
+ return; // JIT disabled.
+ }
+ if (isJitFrame) {
+ break;
+ }
+ }
+
+ // Now call getStack to check this frame is on the profiler's JIT stack.
+ getStack();
+ getStack();
+}
+testFun();