2020-10-15 08:47:26 +00:00
|
|
|
// Copyright 2020 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.
|
|
|
|
|
|
|
|
utils.load('test/inspector/wasm-inspector-test.js');
|
|
|
|
|
|
|
|
let {session, contextGroup, Protocol} = InspectorTest.start(
|
|
|
|
'Step into a function that starts with a non-breakable opcode (i.e. ' +
|
|
|
|
'block), then step from there. See https://crbug.com/1137710.');
|
|
|
|
session.setupScriptMap();
|
|
|
|
|
|
|
|
var builder = new WasmModuleBuilder();
|
|
|
|
|
|
|
|
var callee = builder.addFunction('callee', kSig_v_v)
|
2021-03-22 06:56:01 +00:00
|
|
|
.addBody([kExprBlock, kWasmVoid, kExprEnd])
|
2020-10-15 08:47:26 +00:00
|
|
|
.index;
|
|
|
|
|
|
|
|
var main = builder.addFunction('main', kSig_v_i)
|
|
|
|
.addBody([kExprCallFunction, callee])
|
|
|
|
.exportFunc();
|
|
|
|
|
|
|
|
var module_bytes = builder.toArray();
|
|
|
|
|
2021-01-05 05:51:52 +00:00
|
|
|
InspectorTest.runAsyncTestSuite([
|
|
|
|
async function test() {
|
|
|
|
InspectorTest.logProtocolCommandCalls('Debugger.stepInto');
|
|
|
|
InspectorTest.logProtocolCommandCalls('Debugger.resume');
|
|
|
|
|
2021-04-09 08:58:46 +00:00
|
|
|
await Protocol.Runtime.enable();
|
2021-01-05 05:51:52 +00:00
|
|
|
await Protocol.Debugger.enable();
|
|
|
|
InspectorTest.log('Setting up global instance variable.');
|
|
|
|
WasmInspectorTest.instantiate(module_bytes);
|
|
|
|
const [, {params: wasmScript}] = await Protocol.Debugger.onceScriptParsed(2);
|
|
|
|
|
|
|
|
InspectorTest.log(`Got wasm script: ${wasmScript.url}`);
|
|
|
|
|
|
|
|
// Set a breakpoint in 'main', at the call.
|
|
|
|
InspectorTest.log(`Setting breakpoint on offset ${main.body_offset}`);
|
|
|
|
await Protocol.Debugger.setBreakpoint({
|
|
|
|
location: {
|
|
|
|
scriptId: wasmScript.scriptId,
|
|
|
|
lineNumber: 0,
|
|
|
|
columnNumber: main.body_offset
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
InspectorTest.log('Running main function.');
|
|
|
|
Protocol.Runtime.evaluate({ expression: 'instance.exports.main()' });
|
|
|
|
for (let action of ['stepInto', 'stepInto', 'resume']) {
|
|
|
|
const {params: {callFrames}} = await Protocol.Debugger.oncePaused();
|
|
|
|
await session.logSourceLocation(callFrames[0].location);
|
|
|
|
Protocol.Debugger[action]();
|
2020-10-15 08:47:26 +00:00
|
|
|
}
|
2021-01-05 05:51:52 +00:00
|
|
|
InspectorTest.log('exports.main returned.');
|
2020-10-15 08:47:26 +00:00
|
|
|
}
|
2021-01-05 05:51:52 +00:00
|
|
|
]);
|