[webkit-changes] [WebKit/WebKit] f336bd: [JSC][GreedyRegAlloc] Fix a logic error when compu...

Dan Hecht noreply at github.com
Wed Feb 26 10:56:00 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f336bd7ad8e3a976083736de44e9a3f3efa459cc
      https://github.com/WebKit/WebKit/commit/f336bd7ad8e3a976083736de44e9a3f3efa459cc
  Author: Dan Hecht <dan.hecht at apple.com>
  Date:   2025-02-26 (Wed, 26 Feb 2025)

  Changed paths:
    M Source/JavaScriptCore/b3/air/AirAllocateRegistersByGreedy.cpp

  Log Message:
  -----------
  [JSC][GreedyRegAlloc] Fix a logic error when computing cannotSpillInPlace
https://bugs.webkit.org/show_bug.cgi?id=288611
rdar://145667429

Reviewed by Keith Miller and Yusuke Suzuki.

The filter to ignore tmps that can be spilled in place had a
logic error that made it ineffective. That meant that all
tmps were added to the cannotSpillInPlace set, and so all
tmps that are used only in two consecutive instructions were
marked as unspillable. This is not what was intended and not
optimal.

The b3test::testPatchpointWithAnyResult caught this issue by
causing an assert in the greedy allocator to trigger because that
test clobbers all FP regs at the point where the patchpoint result
is live in order to force the result to spill, but the result tmp
was incorrectly marked as unspillable due to this bug.

* Source/JavaScriptCore/b3/air/AirAllocateRegistersByGreedy.cpp:
(JSC::B3::Air::Greedy::GreedyAllocator::initSpillCosts):

Canonical link: https://commits.webkit.org/291145@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list