Ignore:
Timestamp:
Apr 4, 2012, 3:42:29 PM (13 years ago)
Author:
[email protected]
Message:

Constant Blinding for add/sub immediate crashes in ArmV7 when dest is SP
https://bugs.webkit.org/show_bug.cgi?id=83191

Reviewed by Oliver Hunt.

Make are that blinded constant pairs are similarly aligned to the
original immediate values so that instructions that expect that
alignment work correctly. One example is ARMv7 add/sub imm to SP.

  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::add): Added ASSERT that immediate is word aligned.
(JSC::ARMv7Assembler::sub): Added ASSERT that immediate is word aligned.
(JSC::ARMv7Assembler::sub_S): Added ASSERT that immediate is word aligned.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::additionBlindedConstant):

File:
1 edited

Legend:

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

    r109038 r113253  
    740740
    741741        if (rn == ARMRegisters::sp) {
     742            ASSERT(!(imm.getUInt16() & 3));
    742743            if (!(rd & 8) && imm.isUInt10()) {
    743744                m_formatter.oneWordOp5Reg3Imm8(OP_ADD_SP_imm_T1, rd, static_cast<uint8_t>(imm.getUInt10() >> 2));
     
    15121513
    15131514        if ((rn == ARMRegisters::sp) && (rd == ARMRegisters::sp) && imm.isUInt9()) {
     1515            ASSERT(!(imm.getUInt16() & 3));
    15141516            m_formatter.oneWordOp9Imm7(OP_SUB_SP_imm_T1, static_cast<uint8_t>(imm.getUInt9() >> 2));
    15151517            return;
     
    15731575
    15741576        if ((rn == ARMRegisters::sp) && (rd == ARMRegisters::sp) && imm.isUInt9()) {
     1577            ASSERT(!(imm.getUInt16() & 3));
    15751578            m_formatter.oneWordOp9Imm7(OP_SUB_SP_imm_T1, static_cast<uint8_t>(imm.getUInt9() >> 2));
    15761579            return;
Note: See TracChangeset for help on using the changeset viewer.