1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
// 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)
.addBody([kExprBlock, kWasmVoid, kExprEnd])
.index;
var main = builder.addFunction('main', kSig_v_i)
.addBody([kExprCallFunction, callee])
.exportFunc();
var module_bytes = builder.toArray();
InspectorTest.runAsyncTestSuite([
async function test() {
InspectorTest.logProtocolCommandCalls('Debugger.stepInto');
InspectorTest.logProtocolCommandCalls('Debugger.resume');
await Protocol.Runtime.enable();
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]();
}
InspectorTest.log('exports.main returned.');
}
]);
|