Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| skip-if: !wasmDebuggingEnabled()
// Tests that wasm module scripts are available via findScripts.
var g = newGlobal({newCompartment: true});
g.eval(`o = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary('(module (func) (export "" (func 0)))')));`);
function isWasm(script) { return script.format === "wasm"; }
var dbg = new Debugger(g);
var foundScripts1 = dbg.findScripts().filter(isWasm);
assertEq(foundScripts1.length, 1);
var found = foundScripts1[0];
// Add another module, we should be able to find it via findScripts.
g.eval(`o2 = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary('(module (func) (export "a" (func 0)))')));`);
var foundScripts2 = dbg.findScripts().filter(isWasm);
assertEq(foundScripts2.length, 2);
// The first module should be in the list as wrapping the same wasm module
// twice gets the same Debugger.Script.
assertEq(foundScripts2.indexOf(found) !== -1, true);
// The two modules are distinct.
assertEq(foundScripts2[0] !== foundScripts2[1], true);
// We should be able to find the same script via its source.
for (var ws of foundScripts2) {
var scriptsFromSource = dbg.findScripts({ source: ws.source });
assertEq(scriptsFromSource.length, 1);
assertEq(scriptsFromSource[0], ws);
}