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/debug/Frame-onPop-15.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/debug/Frame-onPop-15.js')
-rw-r--r-- | js/src/jit-test/tests/debug/Frame-onPop-15.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/Frame-onPop-15.js b/js/src/jit-test/tests/debug/Frame-onPop-15.js new file mode 100644 index 0000000000..6b76723cb2 --- /dev/null +++ b/js/src/jit-test/tests/debug/Frame-onPop-15.js @@ -0,0 +1,31 @@ +// Each resumption of a generator gets the same Frame; its onPop handler +// fires each time the generator yields. + +var g = newGlobal({newCompartment: true}); +var dbg = new Debugger(g); +var log; + +var seenFrame = null; +dbg.onDebuggerStatement = function handleDebugger(frame) { + log += 'd'; + assertEq(frame.type, "call"); + + if (seenFrame === null) { + seenFrame = frame; + } else { + assertEq(seenFrame, frame); + } + + let i = frame.eval('i').return; + if (i % 3 == 0) { + frame.onPop = function handlePop(c) { + assertEq(this, seenFrame); + log += ')' + i; + }; + } +}; + +g.eval("function* g() { for (var i = 0; i < 10; i++) { debugger; yield i; } }"); +log =''; +assertEq(g.eval("var t = 0; for (j of g()) t += j; t;"), 45); +assertEq(log, "d)0d)0d)0d)3d)3d)3d)6d)6d)6d)9)9"); |