Changeset 46059 in webkit


Ignore:
Timestamp:
Jul 17, 2009 2:56:28 PM (15 years ago)
Author:
barraclough@apple.com
Message:

2009-07-17 Gabor Loki <loki@inf.u-szeged.hu>

Reviewed by Gavin Barraclough.

Add YARR support for generic ARM platforms (disabled by default).
https://bugs.webkit.org/show_bug.cgi?id=24986

Add generic ARM port for MacroAssembler. It supports the whole
MacroAssembler functionality except floating point.

The class JmpSrc is extended with a flag which enables to patch
the jump destination offset during execution. This feature is
required for generic ARM port.

Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
Signed off by Gabor Loki <loki@inf.u-szeged.hu>

  • JavaScriptCore.pri:
  • assembler/ARMAssembler.cpp: Added. (JSC::ARMAssembler::getLdrImmAddress): (JSC::ARMAssembler::linkBranch): (JSC::ARMAssembler::patchConstantPoolLoad): (JSC::ARMAssembler::getOp2): (JSC::ARMAssembler::genInt): (JSC::ARMAssembler::getImm): (JSC::ARMAssembler::moveImm): (JSC::ARMAssembler::dataTransfer32): (JSC::ARMAssembler::baseIndexTransfer32): (JSC::ARMAssembler::executableCopy):
  • assembler/ARMAssembler.h: Added. (JSC::ARM::): (JSC::ARMAssembler::ARMAssembler): (JSC::ARMAssembler::): (JSC::ARMAssembler::JmpSrc::JmpSrc): (JSC::ARMAssembler::JmpSrc::enableLatePatch): (JSC::ARMAssembler::JmpDst::JmpDst): (JSC::ARMAssembler::JmpDst::isUsed): (JSC::ARMAssembler::JmpDst::used): (JSC::ARMAssembler::emitInst): (JSC::ARMAssembler::and_r): (JSC::ARMAssembler::ands_r): (JSC::ARMAssembler::eor_r): (JSC::ARMAssembler::eors_r): (JSC::ARMAssembler::sub_r): (JSC::ARMAssembler::subs_r): (JSC::ARMAssembler::rsb_r): (JSC::ARMAssembler::rsbs_r): (JSC::ARMAssembler::add_r): (JSC::ARMAssembler::adds_r): (JSC::ARMAssembler::adc_r): (JSC::ARMAssembler::adcs_r): (JSC::ARMAssembler::sbc_r): (JSC::ARMAssembler::sbcs_r): (JSC::ARMAssembler::rsc_r): (JSC::ARMAssembler::rscs_r): (JSC::ARMAssembler::tst_r): (JSC::ARMAssembler::teq_r): (JSC::ARMAssembler::cmp_r): (JSC::ARMAssembler::orr_r): (JSC::ARMAssembler::orrs_r): (JSC::ARMAssembler::mov_r): (JSC::ARMAssembler::movs_r): (JSC::ARMAssembler::bic_r): (JSC::ARMAssembler::bics_r): (JSC::ARMAssembler::mvn_r): (JSC::ARMAssembler::mvns_r): (JSC::ARMAssembler::mul_r): (JSC::ARMAssembler::muls_r): (JSC::ARMAssembler::mull_r): (JSC::ARMAssembler::ldr_imm): (JSC::ARMAssembler::ldr_un_imm): (JSC::ARMAssembler::dtr_u): (JSC::ARMAssembler::dtr_ur): (JSC::ARMAssembler::dtr_d): (JSC::ARMAssembler::dtr_dr): (JSC::ARMAssembler::ldrh_r): (JSC::ARMAssembler::ldrh_d): (JSC::ARMAssembler::ldrh_u): (JSC::ARMAssembler::strh_r): (JSC::ARMAssembler::push_r): (JSC::ARMAssembler::pop_r): (JSC::ARMAssembler::poke_r): (JSC::ARMAssembler::peek_r): (JSC::ARMAssembler::clz_r): (JSC::ARMAssembler::bkpt): (JSC::ARMAssembler::lsl): (JSC::ARMAssembler::lsr): (JSC::ARMAssembler::asr): (JSC::ARMAssembler::lsl_r): (JSC::ARMAssembler::lsr_r): (JSC::ARMAssembler::asr_r): (JSC::ARMAssembler::size): (JSC::ARMAssembler::ensureSpace): (JSC::ARMAssembler::label): (JSC::ARMAssembler::align): (JSC::ARMAssembler::jmp): (JSC::ARMAssembler::patchPointerInternal): (JSC::ARMAssembler::patchConstantPoolLoad): (JSC::ARMAssembler::patchPointer): (JSC::ARMAssembler::repatchInt32): (JSC::ARMAssembler::repatchPointer): (JSC::ARMAssembler::repatchLoadPtrToLEA): (JSC::ARMAssembler::linkJump): (JSC::ARMAssembler::relinkJump): (JSC::ARMAssembler::linkCall): (JSC::ARMAssembler::relinkCall): (JSC::ARMAssembler::getRelocatedAddress): (JSC::ARMAssembler::getDifferenceBetweenLabels): (JSC::ARMAssembler::getCallReturnOffset): (JSC::ARMAssembler::getOp2Byte): (JSC::ARMAssembler::placeConstantPoolBarrier): (JSC::ARMAssembler::RM): (JSC::ARMAssembler::RS): (JSC::ARMAssembler::RD): (JSC::ARMAssembler::RN): (JSC::ARMAssembler::getConditionalField):
  • assembler/ARMv7Assembler.h: (JSC::ARMv7Assembler::JmpSrc::enableLatePatch):
  • assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::Call::enableLatePatch): (JSC::AbstractMacroAssembler::Jump::enableLatePatch):
  • assembler/MacroAssembler.h:
  • assembler/MacroAssemblerARM.h: Added. (JSC::MacroAssemblerARM::): (JSC::MacroAssemblerARM::add32): (JSC::MacroAssemblerARM::and32): (JSC::MacroAssemblerARM::lshift32): (JSC::MacroAssemblerARM::mul32): (JSC::MacroAssemblerARM::not32): (JSC::MacroAssemblerARM::or32): (JSC::MacroAssemblerARM::rshift32): (JSC::MacroAssemblerARM::sub32): (JSC::MacroAssemblerARM::xor32): (JSC::MacroAssemblerARM::load32): (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch): (JSC::MacroAssemblerARM::loadPtrWithPatchToLEA): (JSC::MacroAssemblerARM::load16): (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch): (JSC::MacroAssemblerARM::store32): (JSC::MacroAssemblerARM::pop): (JSC::MacroAssemblerARM::push): (JSC::MacroAssemblerARM::move): (JSC::MacroAssemblerARM::swap): (JSC::MacroAssemblerARM::signExtend32ToPtr): (JSC::MacroAssemblerARM::zeroExtend32ToPtr): (JSC::MacroAssemblerARM::branch32): (JSC::MacroAssemblerARM::branch16): (JSC::MacroAssemblerARM::branchTest32): (JSC::MacroAssemblerARM::jump): (JSC::MacroAssemblerARM::branchAdd32): (JSC::MacroAssemblerARM::mull32): (JSC::MacroAssemblerARM::branchMul32): (JSC::MacroAssemblerARM::branchSub32): (JSC::MacroAssemblerARM::breakpoint): (JSC::MacroAssemblerARM::nearCall): (JSC::MacroAssemblerARM::call): (JSC::MacroAssemblerARM::ret): (JSC::MacroAssemblerARM::set32): (JSC::MacroAssemblerARM::setTest32): (JSC::MacroAssemblerARM::tailRecursiveCall): (JSC::MacroAssemblerARM::makeTailRecursiveCall): (JSC::MacroAssemblerARM::moveWithPatch): (JSC::MacroAssemblerARM::branchPtrWithPatch): (JSC::MacroAssemblerARM::storePtrWithPatch): (JSC::MacroAssemblerARM::supportsFloatingPoint): (JSC::MacroAssemblerARM::supportsFloatingPointTruncate): (JSC::MacroAssemblerARM::loadDouble): (JSC::MacroAssemblerARM::storeDouble): (JSC::MacroAssemblerARM::addDouble): (JSC::MacroAssemblerARM::subDouble): (JSC::MacroAssemblerARM::mulDouble): (JSC::MacroAssemblerARM::convertInt32ToDouble): (JSC::MacroAssemblerARM::branchDouble): (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32): (JSC::MacroAssemblerARM::ARMCondition): (JSC::MacroAssemblerARM::prepareCall): (JSC::MacroAssemblerARM::call32):
  • assembler/X86Assembler.h: (JSC::X86Assembler::JmpSrc::enableLatePatch):
  • jit/ExecutableAllocator.h: (JSC::ExecutableAllocator::cacheFlush):
  • wtf/Platform.h:
  • yarr/RegexJIT.cpp: (JSC::Yarr::RegexGenerator::generateEnter): (JSC::Yarr::RegexGenerator::generateReturn):
Location:
trunk/JavaScriptCore
Files:
3 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r46057 r46059  
     12009-07-17  Gabor Loki  <loki@inf.u-szeged.hu>
     2
     3        Reviewed by Gavin Barraclough.
     4
     5        Add YARR support for generic ARM platforms (disabled by default).
     6        https://bugs.webkit.org/show_bug.cgi?id=24986
     7
     8        Add generic ARM port for MacroAssembler. It supports the whole
     9        MacroAssembler functionality except floating point.
     10
     11        The class JmpSrc is extended with a flag which enables to patch
     12        the jump destination offset during execution. This feature is
     13        required for generic ARM port.
     14
     15        Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
     16        Signed off by Gabor Loki <loki@inf.u-szeged.hu>
     17
     18        * JavaScriptCore.pri:
     19        * assembler/ARMAssembler.cpp: Added.
     20        (JSC::ARMAssembler::getLdrImmAddress):
     21        (JSC::ARMAssembler::linkBranch):
     22        (JSC::ARMAssembler::patchConstantPoolLoad):
     23        (JSC::ARMAssembler::getOp2):
     24        (JSC::ARMAssembler::genInt):
     25        (JSC::ARMAssembler::getImm):
     26        (JSC::ARMAssembler::moveImm):
     27        (JSC::ARMAssembler::dataTransfer32):
     28        (JSC::ARMAssembler::baseIndexTransfer32):
     29        (JSC::ARMAssembler::executableCopy):
     30        * assembler/ARMAssembler.h: Added.
     31        (JSC::ARM::):
     32        (JSC::ARMAssembler::ARMAssembler):
     33        (JSC::ARMAssembler::):
     34        (JSC::ARMAssembler::JmpSrc::JmpSrc):
     35        (JSC::ARMAssembler::JmpSrc::enableLatePatch):
     36        (JSC::ARMAssembler::JmpDst::JmpDst):
     37        (JSC::ARMAssembler::JmpDst::isUsed):
     38        (JSC::ARMAssembler::JmpDst::used):
     39        (JSC::ARMAssembler::emitInst):
     40        (JSC::ARMAssembler::and_r):
     41        (JSC::ARMAssembler::ands_r):
     42        (JSC::ARMAssembler::eor_r):
     43        (JSC::ARMAssembler::eors_r):
     44        (JSC::ARMAssembler::sub_r):
     45        (JSC::ARMAssembler::subs_r):
     46        (JSC::ARMAssembler::rsb_r):
     47        (JSC::ARMAssembler::rsbs_r):
     48        (JSC::ARMAssembler::add_r):
     49        (JSC::ARMAssembler::adds_r):
     50        (JSC::ARMAssembler::adc_r):
     51        (JSC::ARMAssembler::adcs_r):
     52        (JSC::ARMAssembler::sbc_r):
     53        (JSC::ARMAssembler::sbcs_r):
     54        (JSC::ARMAssembler::rsc_r):
     55        (JSC::ARMAssembler::rscs_r):
     56        (JSC::ARMAssembler::tst_r):
     57        (JSC::ARMAssembler::teq_r):
     58        (JSC::ARMAssembler::cmp_r):
     59        (JSC::ARMAssembler::orr_r):
     60        (JSC::ARMAssembler::orrs_r):
     61        (JSC::ARMAssembler::mov_r):
     62        (JSC::ARMAssembler::movs_r):
     63        (JSC::ARMAssembler::bic_r):
     64        (JSC::ARMAssembler::bics_r):
     65        (JSC::ARMAssembler::mvn_r):
     66        (JSC::ARMAssembler::mvns_r):
     67        (JSC::ARMAssembler::mul_r):
     68        (JSC::ARMAssembler::muls_r):
     69        (JSC::ARMAssembler::mull_r):
     70        (JSC::ARMAssembler::ldr_imm):
     71        (JSC::ARMAssembler::ldr_un_imm):
     72        (JSC::ARMAssembler::dtr_u):
     73        (JSC::ARMAssembler::dtr_ur):
     74        (JSC::ARMAssembler::dtr_d):
     75        (JSC::ARMAssembler::dtr_dr):
     76        (JSC::ARMAssembler::ldrh_r):
     77        (JSC::ARMAssembler::ldrh_d):
     78        (JSC::ARMAssembler::ldrh_u):
     79        (JSC::ARMAssembler::strh_r):
     80        (JSC::ARMAssembler::push_r):
     81        (JSC::ARMAssembler::pop_r):
     82        (JSC::ARMAssembler::poke_r):
     83        (JSC::ARMAssembler::peek_r):
     84        (JSC::ARMAssembler::clz_r):
     85        (JSC::ARMAssembler::bkpt):
     86        (JSC::ARMAssembler::lsl):
     87        (JSC::ARMAssembler::lsr):
     88        (JSC::ARMAssembler::asr):
     89        (JSC::ARMAssembler::lsl_r):
     90        (JSC::ARMAssembler::lsr_r):
     91        (JSC::ARMAssembler::asr_r):
     92        (JSC::ARMAssembler::size):
     93        (JSC::ARMAssembler::ensureSpace):
     94        (JSC::ARMAssembler::label):
     95        (JSC::ARMAssembler::align):
     96        (JSC::ARMAssembler::jmp):
     97        (JSC::ARMAssembler::patchPointerInternal):
     98        (JSC::ARMAssembler::patchConstantPoolLoad):
     99        (JSC::ARMAssembler::patchPointer):
     100        (JSC::ARMAssembler::repatchInt32):
     101        (JSC::ARMAssembler::repatchPointer):
     102        (JSC::ARMAssembler::repatchLoadPtrToLEA):
     103        (JSC::ARMAssembler::linkJump):
     104        (JSC::ARMAssembler::relinkJump):
     105        (JSC::ARMAssembler::linkCall):
     106        (JSC::ARMAssembler::relinkCall):
     107        (JSC::ARMAssembler::getRelocatedAddress):
     108        (JSC::ARMAssembler::getDifferenceBetweenLabels):
     109        (JSC::ARMAssembler::getCallReturnOffset):
     110        (JSC::ARMAssembler::getOp2Byte):
     111        (JSC::ARMAssembler::placeConstantPoolBarrier):
     112        (JSC::ARMAssembler::RM):
     113        (JSC::ARMAssembler::RS):
     114        (JSC::ARMAssembler::RD):
     115        (JSC::ARMAssembler::RN):
     116        (JSC::ARMAssembler::getConditionalField):
     117        * assembler/ARMv7Assembler.h:
     118        (JSC::ARMv7Assembler::JmpSrc::enableLatePatch):
     119        * assembler/AbstractMacroAssembler.h:
     120        (JSC::AbstractMacroAssembler::Call::enableLatePatch):
     121        (JSC::AbstractMacroAssembler::Jump::enableLatePatch):
     122        * assembler/MacroAssembler.h:
     123        * assembler/MacroAssemblerARM.h: Added.
     124        (JSC::MacroAssemblerARM::):
     125        (JSC::MacroAssemblerARM::add32):
     126        (JSC::MacroAssemblerARM::and32):
     127        (JSC::MacroAssemblerARM::lshift32):
     128        (JSC::MacroAssemblerARM::mul32):
     129        (JSC::MacroAssemblerARM::not32):
     130        (JSC::MacroAssemblerARM::or32):
     131        (JSC::MacroAssemblerARM::rshift32):
     132        (JSC::MacroAssemblerARM::sub32):
     133        (JSC::MacroAssemblerARM::xor32):
     134        (JSC::MacroAssemblerARM::load32):
     135        (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch):
     136        (JSC::MacroAssemblerARM::loadPtrWithPatchToLEA):
     137        (JSC::MacroAssemblerARM::load16):
     138        (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch):
     139        (JSC::MacroAssemblerARM::store32):
     140        (JSC::MacroAssemblerARM::pop):
     141        (JSC::MacroAssemblerARM::push):
     142        (JSC::MacroAssemblerARM::move):
     143        (JSC::MacroAssemblerARM::swap):
     144        (JSC::MacroAssemblerARM::signExtend32ToPtr):
     145        (JSC::MacroAssemblerARM::zeroExtend32ToPtr):
     146        (JSC::MacroAssemblerARM::branch32):
     147        (JSC::MacroAssemblerARM::branch16):
     148        (JSC::MacroAssemblerARM::branchTest32):
     149        (JSC::MacroAssemblerARM::jump):
     150        (JSC::MacroAssemblerARM::branchAdd32):
     151        (JSC::MacroAssemblerARM::mull32):
     152        (JSC::MacroAssemblerARM::branchMul32):
     153        (JSC::MacroAssemblerARM::branchSub32):
     154        (JSC::MacroAssemblerARM::breakpoint):
     155        (JSC::MacroAssemblerARM::nearCall):
     156        (JSC::MacroAssemblerARM::call):
     157        (JSC::MacroAssemblerARM::ret):
     158        (JSC::MacroAssemblerARM::set32):
     159        (JSC::MacroAssemblerARM::setTest32):
     160        (JSC::MacroAssemblerARM::tailRecursiveCall):
     161        (JSC::MacroAssemblerARM::makeTailRecursiveCall):
     162        (JSC::MacroAssemblerARM::moveWithPatch):
     163        (JSC::MacroAssemblerARM::branchPtrWithPatch):
     164        (JSC::MacroAssemblerARM::storePtrWithPatch):
     165        (JSC::MacroAssemblerARM::supportsFloatingPoint):
     166        (JSC::MacroAssemblerARM::supportsFloatingPointTruncate):
     167        (JSC::MacroAssemblerARM::loadDouble):
     168        (JSC::MacroAssemblerARM::storeDouble):
     169        (JSC::MacroAssemblerARM::addDouble):
     170        (JSC::MacroAssemblerARM::subDouble):
     171        (JSC::MacroAssemblerARM::mulDouble):
     172        (JSC::MacroAssemblerARM::convertInt32ToDouble):
     173        (JSC::MacroAssemblerARM::branchDouble):
     174        (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32):
     175        (JSC::MacroAssemblerARM::ARMCondition):
     176        (JSC::MacroAssemblerARM::prepareCall):
     177        (JSC::MacroAssemblerARM::call32):
     178        * assembler/X86Assembler.h:
     179        (JSC::X86Assembler::JmpSrc::enableLatePatch):
     180        * jit/ExecutableAllocator.h:
     181        (JSC::ExecutableAllocator::cacheFlush):
     182        * wtf/Platform.h:
     183        * yarr/RegexJIT.cpp:
     184        (JSC::Yarr::RegexGenerator::generateEnter):
     185        (JSC::Yarr::RegexGenerator::generateReturn):
     186
    11872009-07-17  Gabor Loki  <loki@inf.u-szeged.hu>
    2188
  • trunk/JavaScriptCore/JavaScriptCore.pri

    r46032 r46059  
    120120    bytecode/StructureStubInfo.cpp \
    121121    bytecode/JumpTable.cpp \
     122    assembler/ARMAssembler.cpp \
    122123    jit/JIT.cpp \
    123124    jit/JITCall.cpp \
  • trunk/JavaScriptCore/assembler/ARMv7Assembler.h

    r44886 r46059  
    443443        }
    444444
     445        void enableLatePatch() { }
    445446    private:
    446447        JmpSrc(int offset)
  • trunk/JavaScriptCore/assembler/AbstractMacroAssembler.h

    r44886 r46059  
    323323        }
    324324
     325        void enableLatePatch()
     326        {
     327            m_jmp.enableLatePatch();
     328        }
     329
    325330    private:
    326331        JmpSrc m_jmp;
     
    357362        {
    358363            masm->m_assembler.linkJump(m_jmp, label.m_label);
     364        }
     365
     366        void enableLatePatch()
     367        {
     368            m_jmp.enableLatePatch();
    359369        }
    360370
  • trunk/JavaScriptCore/assembler/MacroAssembler.h

    r44886 r46059  
    3535namespace JSC { typedef MacroAssemblerARMv7 MacroAssemblerBase; };
    3636
     37#elif PLATFORM(ARM)
     38#include "MacroAssemblerARM.h"
     39namespace JSC { typedef MacroAssemblerARM MacroAssemblerBase; };
     40
    3741#elif PLATFORM(X86)
    3842#include "MacroAssemblerX86.h"
  • trunk/JavaScriptCore/assembler/X86Assembler.h

    r44478 r46059  
    227227        }
    228228
     229        void enableLatePatch() { }
    229230    private:
    230231        JmpSrc(int offset)
  • trunk/JavaScriptCore/jit/ExecutableAllocator.h

    r44886 r46059  
    214214        sys_dcache_flush(code, size);
    215215        sys_icache_invalidate(code, size);
     216#elif PLATFORM(ARM)
     217    #if COMPILER(GCC) && (GCC_VERSION >= 30406)
     218        __clear_cache(reinterpret_cast<char*>(code), reinterpret_cast<char*>(code) + size);
     219    #else
     220        const int syscall = 0xf0002;
     221        __asm __volatile (
     222               "mov     r0, %0\n"
     223               "mov     r1, %1\n"
     224               "mov     r7, %2\n"
     225               "mov     r2, #0x0\n"
     226               "swi     0x00000000\n"
     227           :
     228           :   "r" (code), "r" (reinterpret_cast<char*>(code) + size), "r" (syscall)
     229           :   "r0", "r1", "r7");
     230    #endif // COMPILER(GCC) && (GCC_VERSION >= 30406)
    216231#else
    217232#error "ExecutableAllocator::cacheFlush not implemented on this platform."
  • trunk/JavaScriptCore/wtf/Platform.h

    r45972 r46059  
    312312#if defined(__GNUC__) && !COMPILER(RVCT)
    313313#define WTF_COMPILER_GCC 1
     314#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
    314315#endif
    315316
     
    643644/* Setting this flag prevents the assembler from using RWX memory; this may improve
    644645   security but currectly comes at a significant performance cost. */
    645 #if PLATFORM_ARM_ARCH(7) && PLATFORM(IPHONE)
     646#if PLATFORM(ARM)
    646647#define ENABLE_ASSEMBLER_WX_EXCLUSIVE 1
    647648#else
  • trunk/JavaScriptCore/yarr/RegexJIT.cpp

    r45600 r46059  
    4444    friend void jitCompileRegex(JSGlobalData* globalData, RegexCodeBlock& jitObject, const UString& pattern, unsigned& numSubpatterns, const char*& error, bool ignoreCase, bool multiline);
    4545
    46 #if PLATFORM_ARM_ARCH(7)
     46#if PLATFORM(ARM)
    4747    static const RegisterID input = ARM::r0;
    4848    static const RegisterID index = ARM::r1;
    4949    static const RegisterID length = ARM::r2;
    50 
    5150    static const RegisterID output = ARM::r4;
     51
    5252    static const RegisterID regT0 = ARM::r5;
    5353    static const RegisterID regT1 = ARM::r6;
    5454
    5555    static const RegisterID returnRegister = ARM::r0;
    56 #endif
    57 #if PLATFORM(X86)
     56#elif PLATFORM(X86)
    5857    static const RegisterID input = X86::eax;
    5958    static const RegisterID index = X86::edx;
     
    6564
    6665    static const RegisterID returnRegister = X86::eax;
    67 #endif
    68 #if PLATFORM(X86_64)
     66#elif PLATFORM(X86_64)
    6967    static const RegisterID input = X86::edi;
    7068    static const RegisterID index = X86::esi;
     
    13101308        loadPtr(Address(X86::ebp, 2 * sizeof(void*)), output);
    13111309    #endif
    1312 #elif PLATFORM_ARM_ARCH(7)
     1310#elif PLATFORM(ARM)
     1311#if !PLATFORM_ARM_ARCH(7)
     1312        push(ARM::lr);
     1313#endif
    13131314        push(ARM::r4);
    13141315        push(ARM::r5);
     
    13281329        pop(X86::ebx);
    13291330        pop(X86::ebp);
    1330 #elif PLATFORM_ARM_ARCH(7)
     1331#elif PLATFORM(ARM)
    13311332        pop(ARM::r6);
    13321333        pop(ARM::r5);
Note: See TracChangeset for help on using the changeset viewer.