diff options
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"); |