wasm-jseval.js (1781B)
1 // |jit-test| skip-if: !wasmDebuggingEnabled() 2 // Tests that JS can be evaluated on wasm module scripts frames. 3 4 load(libdir + "wasm.js"); 5 6 wasmRunWithDebugger( 7 '(module (memory 1 1)\ 8 (global (mut f64) (f64.const 0.5))\ 9 (global f32 (f32.const 3.5))\ 10 (func (param i32) (local f64) \ 11 nop \ 12 f64.const 1.0 \ 13 local.tee 1 \ 14 global.set 0 \ 15 nop) \ 16 (export "test" (func 0))\ 17 (data (i32.const 0) "Abc\\x2A"))', 18 undefined, 19 function ({dbg}) { 20 dbg.onEnterFrame = function (frame) { 21 if (frame.type != 'wasmcall') return; 22 23 var memoryContent = frame.eval('new DataView(memory0.buffer).getUint8(3)').return; 24 assertEq(memoryContent, 42, 'valid memory content is expected (0x2A)'); 25 26 var global1AndParamSum = frame.eval('global1 + var0').return; 27 assertEq(global1AndParamSum, 3.5); 28 29 var stepNumber = 0; 30 frame.onStep = function () { 31 switch (stepNumber) { 32 case 0: // before nop 33 assertEq(frame.offset, 65); 34 assertEq(frame.eval('global0').return, 0.5); 35 assertEq(frame.eval('var1').return, 0.0); 36 break; 37 case 2: // after local.tee $var1 38 assertEq(frame.offset, 79); 39 assertEq(frame.eval('var1').return, 1.0); 40 break; 41 case 3: // after global.set $global0 42 assertEq(frame.offset, 80); 43 assertEq(frame.eval('global0').return, 1.0); 44 break; 45 } 46 stepNumber++; 47 }; 48 }; 49 }, 50 function ({error}) { 51 assertEq(error, undefined); 52 } 53 );