Skip to content

Commit 4a28a64

Browse files
committed
Drop WTF_ALLOW_UNSAFE_BUFFER_USAGE in WebCore::RegisterAllocator
https://bugs.webkit.org/show_bug.cgi?id=295297 Reviewed by Darin Adler. This tested as performance neutral on Speedometer. * Source/WebCore/cssjit/RegisterAllocator.h: (WebCore::RegisterAllocator::reserveCalleeSavedRegisters): Canonical link: https://commits.webkit.org/297033@main
1 parent a26105e commit 4a28a64

1 file changed

Lines changed: 9 additions & 14 deletions

File tree

‎Source/WebCore/cssjit/RegisterAllocator.h‎

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,10 @@
3131
#include <wtf/Deque.h>
3232
#include <wtf/Vector.h>
3333

34-
WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN
35-
3634
namespace WebCore {
3735

3836
#if CPU(ARM64)
39-
static const JSC::MacroAssembler::RegisterID callerSavedRegisters[] = {
37+
static constexpr std::array<JSC::MacroAssembler::RegisterID, 15> callerSavedRegisters {
4038
JSC::ARM64Registers::x0,
4139
JSC::ARM64Registers::x1,
4240
JSC::ARM64Registers::x2,
@@ -53,12 +51,12 @@ static const JSC::MacroAssembler::RegisterID callerSavedRegisters[] = {
5351
JSC::ARM64Registers::x13,
5452
JSC::ARM64Registers::x14,
5553
};
56-
static const JSC::MacroAssembler::RegisterID calleeSavedRegisters[] = {
54+
static constexpr std::array<JSC::MacroAssembler::RegisterID, 1> calleeSavedRegisters = {
5755
JSC::ARM64Registers::x19
5856
};
5957
static const JSC::MacroAssembler::RegisterID tempRegister = JSC::ARM64Registers::x15;
6058
#elif CPU(X86_64)
61-
static const JSC::MacroAssembler::RegisterID callerSavedRegisters[] = {
59+
static constexpr std::array<JSC::MacroAssembler::RegisterID, 8> callerSavedRegisters {
6260
JSC::X86Registers::eax,
6361
JSC::X86Registers::ecx,
6462
JSC::X86Registers::edx,
@@ -68,7 +66,7 @@ static const JSC::MacroAssembler::RegisterID callerSavedRegisters[] = {
6866
JSC::X86Registers::r9,
6967
JSC::X86Registers::r10,
7068
};
71-
static const JSC::MacroAssembler::RegisterID calleeSavedRegisters[] = {
69+
static constexpr std::array<JSC::MacroAssembler::RegisterID, 4> calleeSavedRegisters {
7270
JSC::X86Registers::r12,
7371
JSC::X86Registers::r13,
7472
JSC::X86Registers::r14,
@@ -77,10 +75,11 @@ static const JSC::MacroAssembler::RegisterID calleeSavedRegisters[] = {
7775
#else
7876
#error RegisterAllocator has no defined registers for the architecture.
7977
#endif
80-
static const unsigned calleeSavedRegisterCount = std::size(calleeSavedRegisters);
81-
static const unsigned maximumRegisterCount = calleeSavedRegisterCount + std::size(callerSavedRegisters);
8278

83-
typedef Vector<JSC::MacroAssembler::RegisterID, maximumRegisterCount> RegisterVector;
79+
static constexpr unsigned calleeSavedRegisterCount = std::size(calleeSavedRegisters);
80+
static constexpr unsigned maximumRegisterCount = calleeSavedRegisterCount + std::size(callerSavedRegisters);
81+
82+
using RegisterVector = Vector<JSC::MacroAssembler::RegisterID, maximumRegisterCount>;
8483

8584
class RegisterAllocator {
8685
public:
@@ -151,10 +150,8 @@ class RegisterAllocator {
151150

152151
const Vector<JSC::MacroAssembler::RegisterID, calleeSavedRegisterCount>& reserveCalleeSavedRegisters(unsigned count)
153152
{
154-
RELEASE_ASSERT(count <= std::size(calleeSavedRegisters));
155153
RELEASE_ASSERT(!m_reservedCalleeSavedRegisters.size());
156-
for (unsigned i = 0; i < count; ++i) {
157-
JSC::MacroAssembler::RegisterID registerId = calleeSavedRegisters[i];
154+
for (auto registerId : std::span { calleeSavedRegisters }.first(count)) {
158155
m_reservedCalleeSavedRegisters.append(registerId);
159156
m_registers.append(registerId);
160157
}
@@ -246,6 +243,4 @@ inline RegisterAllocator::~RegisterAllocator()
246243

247244
} // namespace WebCore
248245

249-
WTF_ALLOW_UNSAFE_BUFFER_USAGE_END
250-
251246
#endif // ENABLE(CSS_SELECTOR_JIT)

0 commit comments

Comments
 (0)