tor-browser

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

breakpoint-await.js (1347B)


      1 if (typeof disassemble !== "function") {
      2  quit();
      3 }
      4 
      5 const g = newGlobal({ newCompartment: true });
      6 g.eval(`
      7 async function func() {
      8  await 10;
      9 }
     10 async function * func2() {
     11  await 10;
     12 }
     13 var func_dis = disassemble(func);
     14 var func2_dis = disassemble(func2);
     15 `);
     16 const d = new Debugger();
     17 const dg = d.addDebuggee(g);
     18 const script = dg.makeDebuggeeValue(g.func).script;
     19 const script2 = dg.makeDebuggeeValue(g.func2).script;
     20 
     21 function getOffsets(code) {
     22  let CanSkipAwait_offset = -1;
     23  let Await_offset = -1;
     24  let m;
     25  for (const line of code.split("\n")) {
     26    m = line.match(/(\d+):\s+\d+\s+CanSkipAwait\s/);
     27    if (m) {
     28      CanSkipAwait_offset = parseInt(m[1], 10);
     29    }
     30 
     31    m = line.match(/(\d+):\s+\d+\s+Await\s/);
     32    if (m) {
     33      Await_offset = parseInt(m[1], 10);
     34    }
     35  }
     36  assertEq(CanSkipAwait_offset !== -1, true);
     37  assertEq(Await_offset !== -1, true);
     38  return [CanSkipAwait_offset, Await_offset];
     39 }
     40 
     41 let [CanSkipAwait_offset, Await_offset] = getOffsets(g.func_dis);
     42 assertEq(script.getEffectfulOffsets().includes(CanSkipAwait_offset), true);
     43 assertEq(script.getEffectfulOffsets().includes(Await_offset), true);
     44 
     45 [CanSkipAwait_offset, Await_offset] = getOffsets(g.func2_dis);
     46 assertEq(script2.getEffectfulOffsets().includes(CanSkipAwait_offset), true);
     47 assertEq(script2.getEffectfulOffsets().includes(Await_offset), true);