cad99884fb
These tests unnecessarily rely on the `//# sourceURL` annotation. This is preparatory work to eventually move the treatment of `sourceURL` to the DevTools front-end. Bug: chromium:1183990 Change-Id: I934eb1580f503b7b9f8d97c250b7c798bc67e268 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814568 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#73878}
63 lines
2.3 KiB
JavaScript
63 lines
2.3 KiB
JavaScript
// 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('Tests stepping out from javascript to a wasm caller');
|
|
session.setupScriptMap();
|
|
|
|
let builder = new WasmModuleBuilder();
|
|
|
|
let pause = builder.addImport('imp', 'pause', kSig_v_v);
|
|
let func = builder.addFunction('wasm_main', kSig_v_v)
|
|
.addBody([kExprCallFunction, pause])
|
|
.exportAs('main');
|
|
|
|
let module_bytes = builder.toArray();
|
|
|
|
Protocol.Debugger.onPaused(async message => {
|
|
InspectorTest.log('Paused at:');
|
|
var frames = message.params.callFrames;
|
|
await session.logSourceLocation(frames[0].location);
|
|
await Protocol.Debugger.stepOut();
|
|
});
|
|
|
|
contextGroup.addScript(`
|
|
let pause = true;
|
|
function pauseAlternating() {
|
|
if (pause) debugger;
|
|
pause = !pause;
|
|
}
|
|
`);
|
|
|
|
InspectorTest.runAsyncTestSuite([
|
|
async function test() {
|
|
await Protocol.Runtime.enable();
|
|
await Protocol.Debugger.enable();
|
|
InspectorTest.log('Instantiating.');
|
|
const instantiate_code =
|
|
`const instance = (${WasmInspectorTest.instantiateFromBuffer})(${
|
|
JSON.stringify(module_bytes)}, {imp: {pause: pauseAlternating}});`;
|
|
WasmInspectorTest.evalWithUrl(instantiate_code, 'instantiate');
|
|
const [, {params: wasmScript}] = await Protocol.Debugger.onceScriptParsed(2);
|
|
const scriptId = wasmScript.scriptId;
|
|
|
|
InspectorTest.log('Running exports.main.');
|
|
InspectorTest.log('>>> First round');
|
|
await Protocol.Runtime.evaluate({expression: 'instance.exports.main()'});
|
|
InspectorTest.log('exports.main returned.');
|
|
|
|
InspectorTest.log('After stepping out of the last script, we should stop right at the beginning of the next script.');
|
|
InspectorTest.log('>>> Second round');
|
|
await Protocol.Runtime.evaluate({expression: 'instance.exports.main()'});
|
|
InspectorTest.log('exports.main returned.');
|
|
|
|
InspectorTest.log('The next cycle should work as before (stopping at the "debugger" statement), after stopping at script entry.');
|
|
InspectorTest.log('>>> Third round');
|
|
await Protocol.Runtime.evaluate({expression: 'instance.exports.main()'});
|
|
InspectorTest.log('exports.main returned.');
|
|
}
|
|
]);
|