Changeset 82617 in webkit


Ignore:
Timestamp:
Mar 31, 2011 2:25:42 PM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2011-03-31 Thouraya ANDOLSI <thouraya.andolsi@st.com>

Reviewed by Oliver Hunt.

SH4 JIT SUPPORT.
https://bugs.webkit.org/show_bug.cgi?id=44329

Add YARR support for SH4 platforms (disabled by default).

  • GNUmakefile.am:
  • assembler/MacroAssembler.h:
  • assembler/MacroAssemblerSH4.cpp: Added.
  • assembler/MacroAssemblerSH4.h: Added.
  • assembler/SH4Assembler.h: Added.
  • yarr/YarrJIT.cpp:
Location:
trunk/Source/JavaScriptCore
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r82522 r82617  
     12011-03-31  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
     2
     3        Reviewed by Oliver Hunt.
     4
     5        SH4 JIT SUPPORT.
     6        https://bugs.webkit.org/show_bug.cgi?id=44329
     7
     8        Add YARR support for SH4 platforms (disabled by default).
     9
     10        * GNUmakefile.am:
     11        * assembler/MacroAssembler.h:
     12        * assembler/MacroAssemblerSH4.cpp: Added.
     13        * assembler/MacroAssemblerSH4.h: Added.
     14        * assembler/SH4Assembler.h: Added.
     15        * yarr/YarrJIT.cpp:
     16
    1172011-03-30  Adam Roben  <aroben@apple.com>
    218
  • trunk/Source/JavaScriptCore/GNUmakefile.am

    r82508 r82617  
    9292        Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h \
    9393        Source/JavaScriptCore/assembler/MacroAssemblerX86.h \
     94        Source/JavaScriptCore/assembler/MacroAssemblerSH4.h \
     95        Source/JavaScriptCore/assembler/MacroAssemblerSH4.cpp \
     96        Source/JavaScriptCore/assembler/SH4Assembler.h \
    9497        Source/JavaScriptCore/assembler/RepatchBuffer.h \
    9598        Source/JavaScriptCore/assembler/X86Assembler.h \
  • trunk/Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h

    r81577 r82617  
    8686class AssemblerBufferWithConstantPool: public AssemblerBuffer {
    8787    typedef SegmentedVector<uint32_t, 512> LoadOffsets;
     88    using AssemblerBuffer::putIntegral;
     89    using AssemblerBuffer::putIntegralUnchecked;
    8890public:
     91    typedef struct {
     92        short high;
     93        short low;
     94    } TwoShorts;
     95
    8996    enum {
    9097        UniqueConst,
     
    170177        AssemblerBuffer::putInt64Unchecked(value);
    171178        correctDeltas(8);
     179    }
     180
     181    void putIntegral(TwoShorts value)
     182    {
     183        if (m_size > m_capacity - sizeof(TwoShorts))
     184            grow();
     185        putIntegralUnchecked(value);
     186    }
     187
     188    void putIntegralUnchecked(TwoShorts value)
     189    {
     190        putIntegralUnchecked(value.high);
     191        putIntegralUnchecked(value.low);
    172192    }
    173193
  • trunk/Source/JavaScriptCore/assembler/MacroAssembler.h

    r82130 r82617  
    5151namespace JSC { typedef MacroAssemblerX86_64 MacroAssemblerBase; };
    5252
     53#elif CPU(SH4)
     54#include "MacroAssemblerSH4.h"
     55namespace JSC {
     56typedef MacroAssemblerSH4 MacroAssemblerBase;
     57};
     58
    5359#else
    5460#error "The MacroAssembler is not supported on this platform."
  • trunk/Source/JavaScriptCore/yarr/YarrJIT.cpp

    r82130 r82617  
    6060
    6161    static const RegisterID returnRegister = MIPSRegisters::v0;
     62#elif CPU(SH4)
     63    static const RegisterID input = SH4Registers::r4;
     64    static const RegisterID index = SH4Registers::r5;
     65    static const RegisterID length = SH4Registers::r6;
     66    static const RegisterID output = SH4Registers::r7;
     67
     68    static const RegisterID regT0 = SH4Registers::r0;
     69    static const RegisterID regT1 = SH4Registers::r1;
     70
     71    static const RegisterID returnRegister = SH4Registers::r0;
    6272#elif CPU(X86)
    6373    static const RegisterID input = X86Registers::eax;
     
    21802190#endif
    21812191        move(ARMRegisters::r3, output);
     2192#elif CPU(SH4)
     2193        push(SH4Registers::r11);
     2194        push(SH4Registers::r13);
    21822195#elif CPU(MIPS)
    21832196        // Do nothing.
     
    22022215        pop(ARMRegisters::r5);
    22032216        pop(ARMRegisters::r4);
     2217#elif CPU(SH4)
     2218        pop(SH4Registers::r13);
     2219        pop(SH4Registers::r11);
    22042220#elif CPU(MIPS)
    22052221        // Do nothing
Note: See TracChangeset for help on using the changeset viewer.