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);