b7a7e2fb89
The debugger should be notified whenever a new Module is created so it displayed properly. Without this change, the Module is only displayed once, regardless of the number of times it is referenced (by other Workers, say). That is potentially reasonable behavior, but it doesn't match the way JavaScript does it. With this change, the debugger will display the sources like this: ``` ▼ top ▶ localhost ▼ wasm ▼ wasm-82570336 wasm-82570336-0 ▼ worker.js ▶ localhost ▼ wasm ▶ wasm-82570336 ``` Change-Id: I61177e8a07e36ea8e2234aa25e75b1489c9da95f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1666616 Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Ben Smith <binji@chromium.org> Cr-Commit-Position: refs/heads/master@{#62297}
41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
// Copyright 2019 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Flags: --allow-natives-syntax
|
|
|
|
let {session, contextGroup, Protocol} =
|
|
InspectorTest.start('Tests that cloning a module notifies the debugger');
|
|
|
|
utils.load('test/mjsunit/wasm/wasm-module-builder.js');
|
|
|
|
let builder = new WasmModuleBuilder();
|
|
builder.addFunction('f', kSig_v_v).addBody([]).exportAs('f');
|
|
let moduleBytes = JSON.stringify(builder.toArray());
|
|
|
|
contextGroup.addScript(`
|
|
function test(moduleBytes) {
|
|
let wireBytes = new Uint8Array(moduleBytes);
|
|
let module = new WebAssembly.Module(wireBytes.buffer);
|
|
let serialized = %SerializeWasmModule(module);
|
|
let module2 = %DeserializeWasmModule(serialized, wireBytes);
|
|
let module3 = %CloneWasmModule(module);
|
|
}
|
|
`);
|
|
|
|
let scriptsSeen = 0;
|
|
|
|
Protocol.Debugger.onScriptParsed(msg => {
|
|
let url = msg.params.url;
|
|
if (url.startsWith('wasm://')) {
|
|
InspectorTest.log(`Got URL: ${url}`);
|
|
if (++scriptsSeen == 3) {
|
|
InspectorTest.log('Done!');
|
|
InspectorTest.completeTest();
|
|
}
|
|
}
|
|
});
|
|
|
|
Protocol.Debugger.enable();
|
|
Protocol.Runtime.evaluate({expression: `test(${moduleBytes});`});
|