Ignore:
Timestamp:
May 20, 2011, 4:20:48 PM (14 years ago)
Author:
[email protected]
Message:

2011-05-20 Oliver Hunt <[email protected]>

Reviewed by Gavin Barraclough.

Reduce size of inline cache path of get_by_id on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=61221

This reduces the code size of get_by_id by 20 bytes

  • assembler/ARMv7Assembler.h: (JSC::ARMv7Assembler::ldrCompact): (JSC::ARMv7Assembler::repatchCompact): (JSC::ARMv7Assembler::setUInt7ForLoad):
  • assembler/MacroAssemblerARMv7.h: (JSC::MacroAssemblerARMv7::load32WithCompactAddressOffsetPatch):
  • jit/JIT.h:
File:
1 edited

Legend:

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

    r86919 r86999  
    4949    typedef ARMv7Assembler::JumpType JumpType;
    5050    typedef ARMv7Assembler::JumpLinkType JumpLinkType;
    51     static const int MaximumCompactPtrAlignedAddressOffset = 0x7FFFFFFF;
     51    // Magic number is the biggest useful offset we can get on ARMv7 with
     52    // a LDR_imm_T2 encoding
     53    static const int MaximumCompactPtrAlignedAddressOffset = 124;
    5254
    5355    MacroAssemblerARMv7()
     
    486488    DataLabelCompact load32WithCompactAddressOffsetPatch(Address address, RegisterID dest)
    487489    {
    488         DataLabel32 label = load32WithAddressOffsetPatch(address, dest);
    489         return DataLabelCompact(label.label());
     490        DataLabelCompact label(this);
     491        ASSERT(address.offset >= 0);
     492        ASSERT(address.offset <= MaximumCompactPtrAlignedAddressOffset);
     493        ASSERT(ARMThumbImmediate::makeUInt12(address.offset).isUInt7());
     494        m_assembler.ldrCompact(dest, address.base, ARMThumbImmediate::makeUInt12(address.offset));
     495        return label;
    490496    }
    491497
Note: See TracChangeset for help on using the changeset viewer.