Ignore:
Timestamp:
Sep 18, 2009, 1:18:27 PM (16 years ago)
Author:
[email protected]
Message:

2009-09-18 Gabor Loki <[email protected]>

Reviewed by Gavin Barraclough.

Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
https://bugs.webkit.org/show_bug.cgi?id=29122

Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
when Thumb-2 instruction set is the required target. The
PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
case where the code is common the PLATFORM(ARM) have to be used.

  • assembler/ARMAssembler.cpp:
  • assembler/ARMAssembler.h:
  • assembler/ARMv7Assembler.h:
  • assembler/MacroAssembler.h:
  • assembler/MacroAssemblerARM.cpp:
  • assembler/MacroAssemblerARM.h:
  • assembler/MacroAssemblerCodeRef.h: (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
  • jit/ExecutableAllocator.h:
  • jit/JIT.h:
  • jit/JITInlineMethods.h: (JSC::JIT::beginUninterruptedSequence): (JSC::JIT::preserveReturnAddressAfterCall): (JSC::JIT::restoreReturnAddressBeforeReturn): (JSC::JIT::restoreArgumentReference): (JSC::JIT::restoreArgumentReferenceForTrampoline):
  • jit/JITOpcodes.cpp:
  • jit/JITStubs.cpp: (JSC::JITThunks::JITThunks):
  • jit/JITStubs.h:
  • wtf/Platform.h:
  • yarr/RegexJIT.cpp: (JSC::Yarr::RegexGenerator::generateEnter):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/jit/JITInlineMethods.h

    r47614 r48525  
    111111ALWAYS_INLINE void JIT::beginUninterruptedSequence(int insnSpace, int constSpace)
    112112{
    113 #if PLATFORM(ARM) && !PLATFORM_ARM_ARCH(7)
     113#if PLATFORM(ARM_TRADITIONAL)
    114114#ifndef NDEBUG
    115115    // Ensure the label after the sequence can also fit
     
    140140#endif
    141141
    142 #if PLATFORM(X86) || PLATFORM(X86_64) || (PLATFORM(ARM) && !PLATFORM_ARM_ARCH(7))
     142#if PLATFORM(ARM_THUMB2)
    143143
    144144ALWAYS_INLINE void JIT::preserveReturnAddressAfterCall(RegisterID reg)
    145145{
     146    move(linkRegister, reg);
     147}
     148
     149ALWAYS_INLINE void JIT::restoreReturnAddressBeforeReturn(RegisterID reg)
     150{
     151    move(reg, linkRegister);
     152}
     153
     154ALWAYS_INLINE void JIT::restoreReturnAddressBeforeReturn(Address address)
     155{
     156    loadPtr(address, linkRegister);
     157}
     158
     159#else // PLATFORM(X86) || PLATFORM(X86_64) || PLATFORM(ARM_TRADITIONAL)
     160
     161ALWAYS_INLINE void JIT::preserveReturnAddressAfterCall(RegisterID reg)
     162{
    146163    pop(reg);
    147164}
     
    155172{
    156173    push(address);
    157 }
    158 
    159 #elif PLATFORM_ARM_ARCH(7)
    160 
    161 ALWAYS_INLINE void JIT::preserveReturnAddressAfterCall(RegisterID reg)
    162 {
    163     move(linkRegister, reg);
    164 }
    165 
    166 ALWAYS_INLINE void JIT::restoreReturnAddressBeforeReturn(RegisterID reg)
    167 {
    168     move(reg, linkRegister);
    169 }
    170 
    171 ALWAYS_INLINE void JIT::restoreReturnAddressBeforeReturn(Address address)
    172 {
    173     loadPtr(address, linkRegister);
    174174}
    175175
     
    187187    move(stackPointerRegister, firstArgumentRegister);
    188188    poke(callFrameRegister, OBJECT_OFFSETOF(struct JITStackFrame, callFrame) / sizeof (void*));
    189 #if PLATFORM(ARM) && !PLATFORM_ARM_ARCH(7)
     189#if PLATFORM(ARM_TRADITIONAL)
    190190    move(ctiReturnRegister, ARMRegisters::lr);
    191191#endif
     
    196196    // Within a trampoline the return address will be on the stack at this point.
    197197    addPtr(Imm32(sizeof(void*)), stackPointerRegister, firstArgumentRegister);
    198 #elif PLATFORM_ARM_ARCH(7)
     198#elif PLATFORM(ARM_THUMB2)
    199199    move(stackPointerRegister, firstArgumentRegister);
    200200#endif
Note: See TracChangeset for help on using the changeset viewer.