tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

onEnterFrame-generator-02.js (971B)


      1 // onEnterFrame fires after the [[GeneratorState]] is set to "executing".
      2 //
      3 // This test checks that Debugger doesn't accidentally make it possible to
      4 // reenter a generator frame that's already on the stack. (Also tests a fun
      5 // corner case in baseline debug-mode OSR.)
      6 
      7 load(libdir + "asserts.js");
      8 
      9 let g = newGlobal({newCompartment: true});
     10 g.eval('function* f() { yield 1; yield 2; }');
     11 let dbg = Debugger(g);
     12 let genObj = null;
     13 let hits = 0;
     14 dbg.onEnterFrame = frame => {
     15    // The first time onEnterFrame fires, there is no generator object, so
     16    // there's nothing to test. The generator object doesn't exist until
     17    // JSOP_GENERATOR is reached, right before the initial yield.
     18    if (genObj !== null) {
     19        dbg.removeDebuggee(g);  // avoid the DebuggeeWouldRun exception
     20        assertThrowsInstanceOf(() => genObj.next(), g.TypeError);
     21        dbg.addDebuggee(g);
     22        hits++;
     23    }
     24 };
     25 genObj = g.f();
     26 for (let x of genObj) {}
     27 assertEq(hits, 3);