[webkit-changes] [WebKit/WebKit] 4c15f5: [JSC][GreedyRegAlloc] Don't spill Tmps used only i...
Dan Hecht
noreply at github.com
Tue Feb 25 09:08:32 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4c15f53941bbeac26438539d375e470cdd7229a9
https://github.com/WebKit/WebKit/commit/4c15f53941bbeac26438539d375e470cdd7229a9
Author: Dan Hecht <dan.hecht at apple.com>
Date: 2025-02-25 (Tue, 25 Feb 2025)
Changed paths:
M Source/JavaScriptCore/b3/air/AirAllocateRegistersByGreedy.cpp
Log Message:
-----------
[JSC][GreedyRegAlloc] Don't spill Tmps used only in back-to-back insts unless both insts can address the stack
https://bugs.webkit.org/show_bug.cgi?id=288420
rdar://145515418
Reviewed by Yijia Huang.
If a tmp is used only by two consecutive instructions and at least
one of the instructions does not have a stack addressing mode,
then don't allow the tmp to spill. The spill tmp will have the
same interval and so there is no benefit to allowing .
Note that rather than simply setting the spillCost field, a
new flag is intruduced. This is because we don't want groups
(i.e. eagerly coalesced tmps) to inherit the unspillable
property since these coalesced tmps shouldn't be treated as
unspillable since they will span more instructions. If
the group is split, then the indvidual tmp will be unspillable.
* Source/JavaScriptCore/b3/air/AirAllocateRegistersByGreedy.cpp:
(JSC::B3::Air::Greedy::TmpData::dump const):
(JSC::B3::Air::Greedy::TmpData::spillCost):
(JSC::B3::Air::Greedy::TmpData::validate):
(JSC::B3::Air::Greedy::GreedyAllocator::finalizeGroups):
(JSC::B3::Air::Greedy::GreedyAllocator::initSpillCosts):
(JSC::B3::Air::Greedy::GreedyAllocator::newTmp):
(JSC::B3::Air::Greedy::GreedyAllocator::addSpillTmpWithInterval):
(JSC::B3::Air::Greedy::GreedyAllocator::setStageAndEnqueue):
(JSC::B3::Air::Greedy::GreedyAllocator::tryEvict):
(JSC::B3::Air::Greedy::GreedyAllocator::evict):
(JSC::B3::Air::Greedy::GreedyAllocator::trySplit):
(JSC::B3::Air::Greedy::GreedyAllocator::trySplitAroundClobbers):
(JSC::B3::Air::Greedy::GreedyAllocator::spill):
Canonical link: https://commits.webkit.org/291029@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