Changeset 50255 in webkit for trunk/JavaScriptCore/wtf/Platform.h


Ignore:
Timestamp:
Oct 28, 2009, 6:40:09 PM (16 years ago)
Author:
[email protected]
Message:

JSC JIT on ARMv7 cannot link jumps >16Mb range
https://bugs.webkit.org/show_bug.cgi?id=30891

Patch by Gavin Barraclough <[email protected]> on 2009-10-28
Reviewed by Oliver Hunt.

Start planing all relative jumps as move-32-bit-immediate-to-register-BX.
In the cases where the jump would fall within a relative jump range, use a relative jump.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::~ARMv7Assembler):
(JSC::ARMv7Assembler::LinkRecord::LinkRecord):
(JSC::ARMv7Assembler::):
(JSC::ARMv7Assembler::executableCopy):
(JSC::ARMv7Assembler::linkJump):
(JSC::ARMv7Assembler::relinkJump):
(JSC::ARMv7Assembler::setInt32):
(JSC::ARMv7Assembler::isB):
(JSC::ARMv7Assembler::isBX):
(JSC::ARMv7Assembler::isMOV_imm_T3):
(JSC::ARMv7Assembler::isMOVT):
(JSC::ARMv7Assembler::isNOP_T1):
(JSC::ARMv7Assembler::isNOP_T2):
(JSC::ARMv7Assembler::linkJumpAbsolute):
(JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst):
(JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond):
(JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::makeJump):
(JSC::MacroAssemblerARMv7::makeBranch):

  • jit/JIT.h:
  • wtf/Platform.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/wtf/Platform.h

    r50218 r50255  
    731731    #define WTF_USE_JIT_STUB_ARGUMENT_VA_LIST 1
    732732#elif PLATFORM(ARM_THUMB2) && PLATFORM(IPHONE)
    733     /* Under development, temporarily disabled until 16Mb link range limit in assembler is fixed. */
    734     #define ENABLE_JIT 0
     733    #define ENABLE_JIT 1
    735734    #define ENABLE_JIT_OPTIMIZE_NATIVE_CALL 0
    736735/* The JIT is tested & working on x86 Windows */
     
    798797#if (PLATFORM(X86) && PLATFORM(MAC)) \
    799798 || (PLATFORM(X86_64) && PLATFORM(MAC)) \
    800  /* Under development, temporarily disabled until 16Mb link range limit in assembler is fixed. */ \
    801  || (PLATFORM(ARM_THUMB2) && PLATFORM(IPHONE) && 0) \
     799 || (PLATFORM(ARM_THUMB2) && PLATFORM(IPHONE)) \
    802800 || (PLATFORM(X86) && PLATFORM(WIN))
    803801#define ENABLE_YARR 1
Note: See TracChangeset for help on using the changeset viewer.