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

Reply via email to