wasm-step.js (2068B)
1 // |jit-test| test-also=--wasm-compiler=optimizing; skip-if: !wasmDebuggingEnabled() 2 3 // Tests that wasm module scripts raises onEnterFrame and onLeaveFrame events. 4 5 load(libdir + "wasm.js"); 6 7 // Checking if we stop at every wasm instruction during step. 8 var onEnterFrameCalled, onLeaveFrameCalled, onStepCalled; 9 wasmRunWithDebugger( 10 '(module (func (nop) (nop)) (export "test" (func 0)))', 11 undefined, 12 function ({dbg}) { 13 onEnterFrameCalled = 0; 14 onLeaveFrameCalled = 0; 15 onStepCalled = []; 16 dbg.onEnterFrame = function (frame) { 17 if (frame.type != 'wasmcall') return; 18 onEnterFrameCalled++; 19 frame.onStep = function () { 20 onStepCalled.push(frame.offset); 21 }; 22 frame.onPop = function () { 23 onLeaveFrameCalled++; 24 }; 25 }; 26 }, 27 function ({error}) { 28 assertEq(error, undefined); 29 assertEq(onEnterFrameCalled, 1); 30 assertEq(onLeaveFrameCalled, 1); 31 assertEq(onStepCalled.length, 2); 32 assertEq(onStepCalled[0] > 0, true); 33 // The onStepCalled offsets are in ascending order. 34 assertEq(onStepCalled[0] < onStepCalled[1], true); 35 } 36 ); 37 38 // Checking if step mode was disabled after debugger has been detached. 39 wasmRunWithDebugger( 40 '(module (func (nop) (nop)) (export "test" (func 0)))', 41 undefined, 42 function ({dbg, g}) { 43 onEnterFrameCalled = 0; 44 onLeaveFrameCalled = 0; 45 onStepCalled = []; 46 dbg.onEnterFrame = function (frame) { 47 if (frame.type != 'wasmcall') return; 48 onEnterFrameCalled++; 49 frame.onStep = function () { 50 onStepCalled.push(frame.offset); 51 }; 52 frame.onPop = function () { 53 onLeaveFrameCalled++; 54 }; 55 dbg.removeDebuggee(g); 56 }; 57 }, 58 function ({error}) { 59 assertEq(error, undefined); 60 assertEq(onEnterFrameCalled, 1); 61 assertEq(onLeaveFrameCalled, 0); 62 assertEq(onStepCalled.length, 0); 63 } 64 );