tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 );