// |jit-test| test-also=--wasm-compiler=optimizing; skip-if: !wasmDebuggingEnabled()
// Tests that wasm module scripts raises onEnterFrame and onLeaveFrame events.
load(libdir + "wasm.js" );
// Checking if we stop at every wasm instruction during step.
var onEnterFrameCalled, onLeaveFrameCalled, onStepCalled;
wasmRunWithDebugger(
'(module (func (nop) (nop)) (export "test" (func 0)))' ,
undefined,
function ({dbg}) {
onEnterFrameCalled = 0 ;
onLeaveFrameCalled = 0 ;
onStepCalled = [];
dbg.onEnterFrame = function (frame) {
if (frame.type != 'wasmcall' ) return ;
onEnterFrameCalled++;
frame.onStep = function () {
onStepCalled.push(frame.offset);
};
frame.onPop = function () {
onLeaveFrameCalled++;
};
};
},
function ({error}) {
assertEq(error, undefined);
assertEq(onEnterFrameCalled, 1 );
assertEq(onLeaveFrameCalled, 1 );
assertEq(onStepCalled.length, 2 );
assertEq(onStepCalled[0 ] > 0 , true );
// The onStepCalled offsets are in ascending order.
assertEq(onStepCalled[0 ] < onStepCalled[1 ], true );
}
);
// Checking if step mode was disabled after debugger has been detached.
wasmRunWithDebugger(
'(module (func (nop) (nop)) (export "test" (func 0)))' ,
undefined,
function ({dbg, g}) {
onEnterFrameCalled = 0 ;
onLeaveFrameCalled = 0 ;
onStepCalled = [];
dbg.onEnterFrame = function (frame) {
if (frame.type != 'wasmcall' ) return ;
onEnterFrameCalled++;
frame.onStep = function () {
onStepCalled.push(frame.offset);
};
frame.onPop = function () {
onLeaveFrameCalled++;
};
dbg.removeDebuggee(g);
};
},
function ({error}) {
assertEq(error, undefined);
assertEq(onEnterFrameCalled, 1 );
assertEq(onLeaveFrameCalled, 0 );
assertEq(onStepCalled.length, 0 );
}
);
Messung V0.5 in Prozent C=93 H=88 G=90
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland