Changeset 85448 in webkit


Ignore:
Timestamp:
May 1, 2011 6:04:17 PM (13 years ago)
Author:
barraclough@apple.com
Message:

https://bugs.webkit.org/show_bug.cgi?id=59903
Use AssemblerLabel throughout Assembler classes, AssemblerBuffer

Reviewed by Sam Weinig.

Creating a lable() into the AssemblerBuffer should return an AssemblerLabel,
not an unsigned int.

  • assembler/ARMAssembler.cpp:

(JSC::ARMAssembler::executableCopy):

  • assembler/ARMAssembler.h:

(JSC::ARMAssembler::blx):
(JSC::ARMAssembler::label):
(JSC::ARMAssembler::loadBranchTarget):

  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::b):
(JSC::ARMv7Assembler::blx):
(JSC::ARMv7Assembler::bx):
(JSC::ARMv7Assembler::label):
(JSC::ARMv7Assembler::ARMInstructionFormatter::label):

  • assembler/AssemblerBuffer.h:

(JSC::AssemblerBuffer::label):

  • assembler/AssemblerBufferWithConstantPool.h:
  • assembler/MIPSAssembler.h:

(JSC::MIPSAssembler::label):
(JSC::MIPSAssembler::relocateJumps):

  • assembler/SH4Assembler.h:

(JSC::SH4Assembler::loadConstant):
(JSC::SH4Assembler::loadConstantUnReusable):
(JSC::SH4Assembler::call):
(JSC::SH4Assembler::jmp):
(JSC::SH4Assembler::jne):
(JSC::SH4Assembler::je):
(JSC::SH4Assembler::label):
(JSC::SH4Assembler::oneShortOp):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::call):
(JSC::X86Assembler::jmp_r):
(JSC::X86Assembler::label):
(JSC::X86Assembler::X86InstructionFormatter::immediateRel32):
(JSC::X86Assembler::X86InstructionFormatter::label):

Location:
trunk/Source/JavaScriptCore
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r85445 r85448  
     12011-05-01  Gavin Barraclough  <barraclough@apple.com>
     2
     3        Reviewed by Sam Weinig.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=59903
     6        Use AssemblerLabel throughout Assembler classes, AssemblerBuffer
     7
     8        Creating a lable() into the AssemblerBuffer should return an AssemblerLabel,
     9        not an unsigned int.
     10
     11        * assembler/ARMAssembler.cpp:
     12        (JSC::ARMAssembler::executableCopy):
     13        * assembler/ARMAssembler.h:
     14        (JSC::ARMAssembler::blx):
     15        (JSC::ARMAssembler::label):
     16        (JSC::ARMAssembler::loadBranchTarget):
     17        * assembler/ARMv7Assembler.h:
     18        (JSC::ARMv7Assembler::b):
     19        (JSC::ARMv7Assembler::blx):
     20        (JSC::ARMv7Assembler::bx):
     21        (JSC::ARMv7Assembler::label):
     22        (JSC::ARMv7Assembler::ARMInstructionFormatter::label):
     23        * assembler/AssemblerBuffer.h:
     24        (JSC::AssemblerBuffer::label):
     25        * assembler/AssemblerBufferWithConstantPool.h:
     26        * assembler/MIPSAssembler.h:
     27        (JSC::MIPSAssembler::label):
     28        (JSC::MIPSAssembler::relocateJumps):
     29        * assembler/SH4Assembler.h:
     30        (JSC::SH4Assembler::loadConstant):
     31        (JSC::SH4Assembler::loadConstantUnReusable):
     32        (JSC::SH4Assembler::call):
     33        (JSC::SH4Assembler::jmp):
     34        (JSC::SH4Assembler::jne):
     35        (JSC::SH4Assembler::je):
     36        (JSC::SH4Assembler::label):
     37        (JSC::SH4Assembler::oneShortOp):
     38        * assembler/X86Assembler.h:
     39        (JSC::X86Assembler::call):
     40        (JSC::X86Assembler::jmp_r):
     41        (JSC::X86Assembler::label):
     42        (JSC::X86Assembler::X86InstructionFormatter::immediateRel32):
     43        (JSC::X86Assembler::X86InstructionFormatter::label):
     44
    1452011-05-01  Adam Barth  <abarth@webkit.org>
    246
  • trunk/Source/JavaScriptCore/assembler/ARMAssembler.cpp

    r85403 r85448  
    348348    // 64-bit alignment is required for next constant pool and JIT code as well
    349349    m_buffer.flushWithoutBarrier(true);
    350     if (m_buffer.label() & 0x7)
     350    if (m_buffer.codeSize() & 0x7)
    351351        bkpt(0);
    352352
     
    355355    for (Jumps::Iterator iter = m_jumps.begin(); iter != m_jumps.end(); ++iter) {
    356356        // The last bit is set if the constant must be placed on constant pool.
    357         int pos = (*iter) & (~0x1);
     357        int pos = (iter->m_offset) & (~0x1);
    358358        ARMWord* ldrAddr = reinterpret_cast_ptr<ARMWord*>(data + pos);
    359359        ARMWord* addr = getLdrImmAddress(ldrAddr);
    360360        if (*addr != InvalidBranchTarget) {
    361             if (!(*iter & 1)) {
     361            if (!(iter->m_offset & 1)) {
    362362                int diff = reinterpret_cast_ptr<ARMWord*>(data + *addr) - (ldrAddr + DefaultPrefetching);
    363363
  • trunk/Source/JavaScriptCore/assembler/ARMAssembler.h

    r85432 r85448  
    9898        typedef ARMRegisters::FPRegisterID FPRegisterID;
    9999        typedef AssemblerBufferWithConstantPool<2048, 4, 4, ARMAssembler> ARMBuffer;
    100         typedef SegmentedVector<int, 64> Jumps;
     100        typedef SegmentedVector<AssemblerLabel, 64> Jumps;
    101101
    102102        ARMAssembler() { }
     
    592592            bx(rm, cc);
    593593#endif
    594             return AssemblerLabel(m_buffer.label());
     594            return m_buffer.label();
    595595        }
    596596
     
    657657        {
    658658            m_buffer.ensureSpaceForAnyOneInstruction();
    659             return AssemblerLabel(m_buffer.label());
     659            return m_buffer.label();
    660660        }
    661661
     
    673673            m_jumps.append(m_buffer.label() | (useConstantPool & 0x1));
    674674            ldr_un_imm(rd, InvalidBranchTarget, cc);
    675             return AssemblerLabel(m_buffer.label());
     675            return m_buffer.label();
    676676        }
    677677
  • trunk/Source/JavaScriptCore/assembler/ARMv7Assembler.h

    r85432 r85448  
    827827    {
    828828        m_formatter.twoWordOp16Op16(OP_B_T4a, OP_B_T4b);
    829         return AssemblerLabel(m_formatter.label());
     829        return m_formatter.label();
    830830    }
    831831   
     
    835835        ASSERT(rm != ARMRegisters::pc);
    836836        m_formatter.oneWordOp8RegReg143(OP_BLX, rm, (RegisterID)8);
    837         return AssemblerLabel(m_formatter.label());
     837        return m_formatter.label();
    838838    }
    839839
     
    842842    {
    843843        m_formatter.oneWordOp8RegReg143(OP_BX, rm, (RegisterID)0);
    844         return AssemblerLabel(m_formatter.label());
     844        return m_formatter.label();
    845845    }
    846846
     
    15291529    AssemblerLabel label()
    15301530    {
    1531         return AssemblerLabel(m_formatter.label());
     1531        return m_formatter.label();
    15321532    }
    15331533   
     
    22002200
    22012201        size_t codeSize() const { return m_buffer.codeSize(); }
     2202        AssemblerLabel label() const { return m_buffer.label(); }
    22022203        bool isAligned(int alignment) const { return m_buffer.isAligned(alignment); }
    22032204        void* data() const { return m_buffer.data(); }
  • trunk/Source/JavaScriptCore/assembler/AssemblerBuffer.h

    r85432 r85448  
    151151        }
    152152
    153         unsigned label() const
    154         {
    155             return m_size;
     153        AssemblerLabel label() const
     154        {
     155            return AssemblerLabel(m_size);
    156156        }
    157157
  • trunk/Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h

    r85404 r85448  
    255255        flushIfNoSpaceFor(sizeof(IntegralType), 4);
    256256
    257         m_loadOffsets.append(label());
     257        m_loadOffsets.append(codeSize());
    258258        if (isReusable) {
    259259            for (int i = 0; i < m_numConsts; ++i) {
     
    297297        }
    298298
    299         int constPoolOffset = label();
     299        int constPoolOffset = codeSize();
    300300        append(reinterpret_cast<char*>(m_pool), m_numConsts * sizeof(uint32_t));
    301301
  • trunk/Source/JavaScriptCore/assembler/MIPSAssembler.h

    r85432 r85448  
    149149    typedef MIPSRegisters::RegisterID RegisterID;
    150150    typedef MIPSRegisters::FPRegisterID FPRegisterID;
    151     typedef SegmentedVector<int, 64> Jumps;
     151    typedef SegmentedVector<AssemblerLabel, 64> Jumps;
    152152
    153153    MIPSAssembler()
     
    618618    AssemblerLabel label()
    619619    {
    620         return AssemblerLabel(m_buffer.label());
     620        return m_buffer.label();
    621621    }
    622622
     
    758758        // Check each jump
    759759        for (Jumps::Iterator iter = m_jumps.begin(); iter != m_jumps.end(); ++iter) {
    760             int pos = *iter;
     760            int pos = iter->m_offset;
    761761            MIPSWord* insn = reinterpret_cast<MIPSWord*>(reinterpret_cast<intptr_t>(newBase) + pos);
    762762            insn = insn + 2;
  • trunk/Source/JavaScriptCore/assembler/SH4Assembler.h

    r85432 r85448  
    11261126
    11271127        m_buffer.ensureSpace(maxInstructionSize, sizeof(uint32_t));
    1128         printInstr(getOpcodeGroup3(MOVIMM_OPCODE, dst, constant), m_buffer.label());
     1128        printInstr(getOpcodeGroup3(MOVIMM_OPCODE, dst, constant), m_buffer.codeSize());
    11291129        m_buffer.putShortWithConstantInt(opc, constant, true);
    11301130    }
     
    11371137            m_buffer.ensureSpace(maxInstructionSize, sizeof(uint32_t));
    11381138
    1139         printInstr(getOpcodeGroup3(MOVIMM_OPCODE, dst, constant), m_buffer.label());
     1139        printInstr(getOpcodeGroup3(MOVIMM_OPCODE, dst, constant), m_buffer.codeSize());
    11401140        m_buffer.putShortWithConstantInt(opc, constant);
    11411141    }
     
    11511151        nop();
    11521152        releaseScratch(scr);
    1153         return AssemblerLabel(m_buffer.label());
     1153        return m_buffer.label();
    11541154    }
    11551155
     
    11591159        branch(JSR_OPCODE, dst);
    11601160        nop();
    1161         return AssemblerLabel(m_buffer.label());
     1161        return m_buffer.label();
    11621162    }
    11631163
     
    11661166        RegisterID scr = claimScratch();
    11671167        m_buffer.ensureSpace(maxInstructionSize + 4, sizeof(uint32_t));
    1168         int m_size = m_buffer.label();
     1168        AssemblerLabel label = m_buffer.label();
    11691169        loadConstantUnReusable(0x0, scr);
    11701170        branch(BRAF_OPCODE, scr);
    11711171        nop();
    11721172        releaseScratch(scr);
    1173         return AssemblerLabel(m_size);
     1173        return label;
    11741174    }
    11751175
     
    11771177    {
    11781178        jmpReg(dst);
    1179         return AssemblerLabel(m_buffer.label());
     1179        return m_buffer.label();
    11801180    }
    11811181
     
    11891189    AssemblerLabel jne()
    11901190    {
    1191         int m_size = m_buffer.label();
     1191        AssemblerLabel label = m_buffer.label();
    11921192        branch(BF_OPCODE, 0);
    1193         return AssemblerLabel(m_size);
     1193        return label;
    11941194    }
    11951195
    11961196    AssemblerLabel je()
    11971197    {
    1198         int m_size = m_buffer.label();
     1198        AssemblerLabel label = m_buffer.label();
    11991199        branch(BT_OPCODE, 0);
    1200         return AssemblerLabel(m_size);
     1200        return label;
    12011201    }
    12021202
     
    12101210    {
    12111211        m_buffer.ensureSpaceForAnyOneInstruction();
    1212         return AssemblerLabel(m_buffer.label());
     1212        return m_buffer.label();
    12131213    }
    12141214
     
    14821482    void oneShortOp(uint16_t opcode, bool checksize = true, bool isDouble = true)
    14831483    {
    1484         printInstr(opcode, m_buffer.label(), isDouble);
     1484        printInstr(opcode, m_buffer.codeSize(), isDouble);
    14851485        if (checksize)
    14861486            m_buffer.ensureSpace(maxInstructionSize);
  • trunk/Source/JavaScriptCore/assembler/X86Assembler.h

    r85432 r85448  
    11781178    {
    11791179        m_formatter.oneByteOp(OP_GROUP5_Ev, GROUP5_OP_CALLN, dst);
    1180         return AssemblerLabel(m_formatter.label());
     1180        return m_formatter.label();
    11811181    }
    11821182   
     
    11981198    {
    11991199        m_formatter.oneByteOp(OP_GROUP5_Ev, GROUP5_OP_JMPN, dst);
    1200         return AssemblerLabel(m_formatter.label());
     1200        return m_formatter.label();
    12011201    }
    12021202   
     
    14791479    AssemblerLabel label()
    14801480    {
    1481         return AssemblerLabel(m_formatter.label());
     1481        return m_formatter.label();
    14821482    }
    14831483   
     
    18711871        {
    18721872            m_buffer.putIntUnchecked(0);
    1873             return AssemblerLabel(label());
     1873            return label();
    18741874        }
    18751875
     
    18771877
    18781878        size_t codeSize() const { return m_buffer.codeSize(); }
    1879         size_t label() const { return m_buffer.label(); }
     1879        AssemblerLabel label() const { return m_buffer.label(); }
    18801880        bool isAligned(int alignment) const { return m_buffer.isAligned(alignment); }
    18811881        void* data() const { return m_buffer.data(); }
Note: See TracChangeset for help on using the changeset viewer.