// 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});`});