dhecht
JSC security specialist
Summary
dhecht works almost entirely inside JSC, concentrated in the B3/Air backend — register allocator migration (graph-coloring removal, GreedyRegAlloc live-range splitting) alongside optimization-pass fixes — with a secondary line in bmalloc/libpas covering TLC lifetime bugs and allocator test coverage for evicted and paged-out backing, plus a GC finalization refactor (the visitWeak → reconcileWeakReferencesAtGCEnd renames and the LazyJSValue::emit StringImpl leak). The security-flagged commits are compiler-correctness rather than memory-safety hardening: ReduceStrength Select specialization when a Check sits between Select and trigger, BackwardsGraph on loops with multiple back-edge sources, patchpoint cloning for Wasm calls inside try blocks, and CallLinkInfo linking after handleHostCall — all landing in a tight late-August window, which reads as a sweep of B3 passes rather than isolated inbound reports. Systematic-variant candidate: other ReduceStrength specializations and Air-level clone/duplication paths that make the same assumptions about intervening side-effecting nodes and non-trivial control flow.
Components
Security Fix History
- 2026-09-02 [JSC] Fix Object Allocation Sinking closure rule for allocations within inlined closure-call and varargs frames 2026-W35
- 2026-08-25 [JSC] Do not attempt to link a CallLinkInfo after handleHostCall ·
- 2026-08-24 [JSC] Fix B3 ReduceStrength Select specialization when a Check appears between the Select and triggering Check · CVE-2026-64715
- 2026-08-24 [JSC] Fix BackwardsGraph for loops with multiple back-edge sources ·
- 2026-08-23 [JSC] Do not clone patchpoints for Wasm calls within a try block · CVE-2026-65334
- 2026-05-27 [libpas] pas_enumerator_create should check validity of compact heap bump ·
- 2026-05-06 [JSC] GreedyRegAlloc: Add loop-aware live range splitting (disabled by default) 2026-W18
- 2026-04-29 [JSC] GreedyRegAlloc: Add loop-aware live range splitting (disabled by default)
- 2025-12-13 [libpas] fix lock-free reads of the medium directory tuple table CVE-2025-43531
Hardening Commits
Recent Commits
- 2026-09-02 [JSC] Fix Object Allocation Sinking closure rule for allocations within inlined closure-call and varargs frames 2026-W35
- 2026-08-25 [JSC] Do not attempt to link a CallLinkInfo after handleHostCall ·
- 2026-08-24 [JSC] Fix B3 ReduceStrength Select specialization when a Check appears between the Select and triggering Check · CVE-2026-64715
- 2026-08-24 [JSC] Fix BackwardsGraph for loops with multiple back-edge sources ·
- 2026-08-23 [JSC] Do not clone patchpoints for Wasm calls within a try block · CVE-2026-65334
- 2026-08-14 [JSC] Remove dead JettisonDueToProfiledWatchpoint
- 2026-08-13 [JSC] Rename the visitWeak family to reconcileWeakReferencesAtGCEnd
- 2026-08-13 [JSC] Rename Status/Variant finalize predicates to isStillLive
- 2026-08-13 [JSC] Rename HeapFinalizerCallback to GCCompletionCallback
- 2026-08-13 [JSC] Rename Heap::finalize to Heap::runCollectionEpilogue
- 2026-08-13 [JSC] Rename finalizeUnconditionally to reconcileWeakReferencesAtGCEnd
- 2026-08-07 [JSC] LazyJSValue::emit leaks a StringImpl reference when finalization is skipped
- 2026-08-04 [JSC] Document the cell construction protocol at JSCell::finishCreation()
- 2026-08-04 [run-jsc-stress-tests] Print per-test execution times when the progress meter is enabled
- 2026-08-01 REGRESSION(318202@main): Win-Build-EWS - failing compile-webkit