Ignore:
Timestamp:
Mar 13, 2022, 7:34:17 AM (3 years ago)
Author:
Angelos Oikonomopoulos
Message:

[JSC] Use addressTempRegister in loadValue(void *) on 32 bits
https://bugs.webkit.org/show_bug.cgi?id=237773

Reviewed by Žan Doberšek.

Instead of using one of the destination registers as an address
temporary, use addressTempRegister instead. This allows reusing
the value in addressTempRegister (with an appropriate offset) if
possible, which results in a >25% size reduction for DFGOSRExit
(JS2) on ARMv7 (though not a significant size reduction overall).
Technically, this change could be killing some address reuse that
was previously possible because loadValue was not clobbering
addressTempRegister but, if so, this seems to be balanced out for
JS2.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::BoundsNonDoubleWordOffset::within):
(JSC::MacroAssemblerARMv7::BoundsDoubleWordOffset::within):
(JSC::MacroAssemblerARMv7::loadPair32):
(JSC::MacroAssemblerARMv7::setupArmAddress):
(JSC::MacroAssemblerARMv7::absoluteAddressWithinShortOffset):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::loadPair32):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::loadValue):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h

    r287301 r291217  
    13351335            load32(address.withOffset(4), dest2);
    13361336        }
     1337    }
     1338
     1339    void loadPair32(AbsoluteAddress address, RegisterID dest1, RegisterID dest2)
     1340    {
     1341        move(TrustedImmPtr(address.m_ptr), addrTempRegister);
     1342        loadPair32(addrTempRegister, dest1, dest2);
    13371343    }
    13381344
Note: See TracChangeset for help on using the changeset viewer.