From b76154f97d81c2154dc25b0266a5a1156cdec5d8 Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi Date: Mon, 29 Dec 2025 18:03:48 +0000 Subject: [PATCH] [JSC] Do not skip the FPR path if either payload or tag GPR is unavailable. --- .../JavaScriptCore/jit/CallFrameShuffler32_64.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Source/JavaScriptCore/jit/CallFrameShuffler32_64.cpp b/Source/JavaScriptCore/jit/CallFrameShuffler32_64.cpp index b24d9db58e86..314266a205ce 100644 --- a/Source/JavaScriptCore/jit/CallFrameShuffler32_64.cpp +++ b/Source/JavaScriptCore/jit/CallFrameShuffler32_64.cpp @@ -88,13 +88,13 @@ void CallFrameShuffler::emitLoad(CachedRecovery& location) bool tryFPR { true }; JSValueRegs wantedJSValueRegs { location.wantedJSValueRegs() }; if (wantedJSValueRegs) { - if (wantedJSValueRegs.payloadGPR() != InvalidGPRReg - && !m_registers[wantedJSValueRegs.payloadGPR()] - && !m_lockedRegisters.contains(wantedJSValueRegs.payloadGPR(), IgnoreVectors)) - tryFPR = false; - if (wantedJSValueRegs.tagGPR() != InvalidGPRReg - && !m_registers[wantedJSValueRegs.tagGPR()] - && !m_lockedRegisters.contains(wantedJSValueRegs.tagGPR(), IgnoreVectors)) + const auto isAvailable = [this](GPRReg reg) { + return reg != InvalidGPRReg + && !m_registers[reg] + && !m_lockedRegisters.contains(reg, IgnoreVectors); + }; + if (isAvailable(wantedJSValueRegs.payloadGPR()) + && isAvailable(wantedJSValueRegs.tagGPR())) tryFPR = false; }