Changeset 203293 in webkit


Ignore:
Timestamp:
Jul 15, 2016 1:03:39 PM (8 years ago)
Author:
Csaba Osztrogonác
Message:

Add new functions to ARMAssembler after r202214
https://bugs.webkit.org/show_bug.cgi?id=159713

Reviewed by Saam Barati.

  • assembler/ARMAssembler.h:

(JSC::ARMAssembler::fillNops):

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::patchableBranch32):
(JSC::MacroAssemblerARM::internalCompare32):

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r203286 r203293  
     12016-07-15  Csaba Osztrogonác  <ossy@webkit.org>
     2
     3        Add new functions to ARMAssembler after r202214
     4        https://bugs.webkit.org/show_bug.cgi?id=159713
     5
     6        Reviewed by Saam Barati.
     7
     8        * assembler/ARMAssembler.h:
     9        (JSC::ARMAssembler::fillNops):
     10        * assembler/MacroAssemblerARM.h:
     11        (JSC::MacroAssemblerARM::patchableBranch32):
     12        (JSC::MacroAssemblerARM::internalCompare32):
     13
    1142016-07-15  Mark Lam  <mark.lam@apple.com>
    215
  • trunk/Source/JavaScriptCore/assembler/ARMAssembler.h

    r189357 r203293  
    707707        }
    708708
     709        static void fillNops(void* base, size_t size, bool isCopyingToExecutableMemory)
     710        {
     711            UNUSED_PARAM(isCopyingToExecutableMemory);
     712            RELEASE_ASSERT(!(size % sizeof(int32_t)));
     713
     714            int32_t* ptr = static_cast<int32_t*>(base);
     715            const size_t num32s = size / sizeof(int32_t);
     716            const int32_t insn = NOP;
     717            for (size_t i = 0; i < num32s; i++)
     718                *ptr++ = insn;
     719        }
     720
    709721        void dmbSY()
    710722        {
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerARM.h

    r202899 r203293  
    911911    }
    912912
     913    PatchableJump patchableBranch32(RelationalCondition cond, Address address, TrustedImm32 imm)
     914    {
     915        internalCompare32(address, imm);
     916        Jump jump(m_assembler.loadBranchTarget(ARMRegisters::S1, ARMCondition(cond), false));
     917        m_assembler.bx(ARMRegisters::S1, ARMCondition(cond));
     918        return PatchableJump(jump);
     919    }
     920
    913921    void breakpoint()
    914922    {
     
    15331541    }
    15341542
     1543    void internalCompare32(Address left, TrustedImm32 right)
     1544    {
     1545        ARMWord tmp = (static_cast<unsigned>(right.m_value) == 0x80000000) ? ARMAssembler::InvalidImmediate : m_assembler.getOp2(-right.m_value);
     1546        load32(left, ARMRegisters::S1);
     1547        if (tmp != ARMAssembler::InvalidImmediate)
     1548            m_assembler.cmn(ARMRegisters::S1, tmp);
     1549        else
     1550            m_assembler.cmp(ARMRegisters::S1, m_assembler.getImm(right.m_value, ARMRegisters::S0));
     1551    }
     1552
    15351553    static void linkCall(void* code, Call call, FunctionPtr function)
    15361554    {
Note: See TracChangeset for help on using the changeset viewer.