3c98a2a36a
If a breakpoint is set on a non-breakable position, the wasm interpreter just stores the value 0xFF (kInternalBreakpoint) in the function body (actually, a copy of the function body). This might overwrite immediates and cause subsequent failures in the wasm interpreter. In JavaScript, breakpoints are just forwarded to the next breakable position. This CL implements the same for WebAssembly. A cctest tests this behavior, and the existing wasm-stepping-byte-offsets.js inspector test is extended to also set the breakpoint within an i32 constant immediate. R=leese@chromium.org, mstarzinger@chromium.org CC=bmeurer@chromium.org Bug: chromium:1025184 Change-Id: Ia2706f8f1c3d686cbbe8e1e7339d9ee86247bb4a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1925152 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#65070}
303 lines
6.3 KiB
Plaintext
303 lines
6.3 KiB
Plaintext
Tests stepping through wasm scripts by byte offsets
|
|
Setting up global instance variable.
|
|
Got wasm script: wasm://wasm/41f464ee
|
|
Requesting source for wasm://wasm/41f464ee...
|
|
Source retrieved without error: true
|
|
Setting breakpoint on offset 59 (should be propagated to 60, the offset of the call), url wasm://wasm/41f464ee
|
|
{
|
|
columnNumber : 60
|
|
lineNumber : 0
|
|
scriptId : <scriptId>
|
|
}
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:9:6
|
|
at wasm_B (9:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":3}
|
|
stack: {"0":1024}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-0:1:2
|
|
at wasm_A (1:2):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1024}
|
|
stack: {}
|
|
at wasm_B (9:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":3}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepOver called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-0:2:2
|
|
at wasm_A (2:2):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1024}
|
|
stack: {}
|
|
at wasm_B (9:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":3}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepOut called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:10:6
|
|
at wasm_B (10:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":3}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepOut called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:9:6
|
|
at wasm_B (9:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":2}
|
|
stack: {"0":1024}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepOver called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:10:6
|
|
at wasm_B (10:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":2}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:1:2
|
|
at wasm_B (1:2):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":2}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.resume called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:9:6
|
|
at wasm_B (9:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1}
|
|
stack: {"0":1024}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-0:1:2
|
|
at wasm_A (1:2):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1024}
|
|
stack: {}
|
|
at wasm_B (9:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepOut called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:10:6
|
|
at wasm_B (10:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:1:2
|
|
at wasm_B (1:2):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:2:4
|
|
at wasm_B (2:4):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:3:4
|
|
at wasm_B (3:4):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1}
|
|
stack: {"0":1}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:4:6
|
|
at wasm_B (4:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:5:6
|
|
at wasm_B (5:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1}
|
|
stack: {"0":1}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:6:6
|
|
at wasm_B (6:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1}
|
|
stack: {"0":1,"1":1}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:7:6
|
|
at wasm_B (7:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1}
|
|
stack: {"0":0}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:8:6
|
|
at wasm_B (8:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":0}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:9:6
|
|
at wasm_B (9:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":0}
|
|
stack: {"0":1024}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-0:1:2
|
|
at wasm_A (1:2):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1024}
|
|
stack: {}
|
|
at wasm_B (9:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":0}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-0:2:2
|
|
at wasm_A (2:2):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1024}
|
|
stack: {}
|
|
at wasm_B (9:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":0}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-0:3:0
|
|
at wasm_A (3:0):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":1024}
|
|
stack: {}
|
|
at wasm_B (9:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":0}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.stepInto called
|
|
Paused at wasm://wasm/41f464ee/41f464ee-1:10:6
|
|
at wasm_B (10:6):
|
|
- scope (global):
|
|
-- skipped
|
|
- scope (local):
|
|
locals: {"arg#0":0}
|
|
stack: {}
|
|
at (anonymous) (0:17):
|
|
- scope (global):
|
|
-- skipped
|
|
Debugger.resume called
|
|
exports.main returned!
|
|
Finished!
|