From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../tests/debug/Frame-older-generators-01.js | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 js/src/jit-test/tests/debug/Frame-older-generators-01.js (limited to 'js/src/jit-test/tests/debug/Frame-older-generators-01.js') diff --git a/js/src/jit-test/tests/debug/Frame-older-generators-01.js b/js/src/jit-test/tests/debug/Frame-older-generators-01.js new file mode 100644 index 0000000000..f79f485faf --- /dev/null +++ b/js/src/jit-test/tests/debug/Frame-older-generators-01.js @@ -0,0 +1,53 @@ +// Generator/async frames can be created by following .older. +// +// The goal here is to get some test coverage creating generator Frame objects +// at some time other than when firing onEnterFrame. Here they're created after +// the initial yield. + +let g = newGlobal({newCompartment: true}); +g.eval(` + function f() { + debugger; + } + function* gen() { + f(); + yield 1; + f(); + } + function* genDefaults(x=f()) { + f(); + } + async function af() { + f(); + await 1; + f(); + } + async function afDefaults(x=f()) { + await 1; + f(); + } +`); + +function test(expected, code) { + let dbg = Debugger(g); + let hits = 0; + let genFrame = null; + dbg.onDebuggerStatement = frame => { + hits++; + assertEq(frame.callee.name, "f"); + if (genFrame === null) { + genFrame = frame.older; + } else { + assertEq(frame.older, genFrame); + } + assertEq(genFrame.callee.name, expected); + }; + g.eval(code); + assertEq(hits, 2); + dbg.removeDebuggee(g); +} + +test("gen", "for (var x of gen()) {}"); +test("genDefaults", "for (var x of genDefaults()) {}"); +test("af", "af(); drainJobQueue();"); +test("afDefaults", "afDefaults(); drainJobQueue();") -- cgit v1.2.3