Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0aac8dcd47b66ca9abb51812f6b848e63789034a
https://github.com/WebKit/WebKit/commit/0aac8dcd47b66ca9abb51812f6b848e63789034a
Author: Yijia Huang <[email protected]>
Date: 2026-09-16 (Wed, 16 Sep 2026)
Changed paths:
M Source/JavaScriptCore/wasm/debugger/WasmBreakpointManager.cpp
M Source/JavaScriptCore/wasm/debugger/WasmBreakpointManager.h
M Source/JavaScriptCore/wasm/debugger/WasmDebugServerUtilities.h
M Source/JavaScriptCore/wasm/debugger/WasmExecutionHandler.cpp
M Source/JavaScriptCore/wasm/debugger/tests/ExecutionHandlerTest.cpp
Log Message:
-----------
[JSC] WASM debugger: simplify one-time breakpoint bookkeeping
https://bugs.webkit.org/show_bug.cgi?id=324390
rdar://187623360
Reviewed by Yusuke Suzuki.
Breakpoint::Type existed but no Breakpoint held one, and setBreakpointStopData
translated it into DebugState::Reason through a switch that only renamed. The
one-time breakpoints lived in a set keyed by pc, so the rule keeping a patch
alive
straddled two structures and every sweep looked each byte up again.
One byte can carry an LLDB site and a one-time breakpoint at once, so Breakpoint
records both: siteCount and an optional oneTimeClaim, with isUnused() as the
whole
lifetime rule. m_oneTimeBreakpoints becomes a Vector<Ref<Breakpoint>>, so a
sweep
visits only the bytes it has to and needs no lookups. Breakpoint::Type is gone
--
DebugState::Reason moves to namespace scope as DebugStopReason and TrapAction
carries it directly, so trapActionFor is the single place this becomes a wire
reason, and a site still outranks a one-time breakpoint on the same byte.
ExecutionHandlerTest gains the ordering it lacked, a site installed on a byte
that
already holds a one-time breakpoint.
Canonical link: https://commits.webkit.org/321302@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications