Changeset 44523 in webkit for trunk/JavaScriptCore/wtf


Ignore:
Timestamp:
Jun 8, 2009, 11:52:25 PM (16 years ago)
Author:
[email protected]
Message:

2009-06-08 Gavin Barraclough <[email protected]>

Reviewed by Geoff Garen.

Enable JS language JIT for ARM thumb2 platforms. Add ARMv7 specific
asm & constants, add appropriate configuration switches to Platform.h.

Landing this disabled until jump linking is completed (see YARR jit patch).

  • assembler/MacroAssemblerARMv7.h: (JSC::MacroAssemblerARMv7::load32):

Fix: should load pointer with ImmPtr not Imm32.

(JSC::MacroAssemblerARMv7::store32):

Fix: should load pointer with ImmPtr not Imm32.

(JSC::MacroAssemblerARMv7::move):

Fix: When moving an Imm32 that is actually a pointer, should call movT3()
not mov(), to ensure code generation is repeatable (for exception handling).

  • jit/JIT.cpp: (JSC::JIT::privateCompileCTIMachineTrampolines):

Disable JIT_OPTIMIZE_NATIVE_CALL specific code generation if the optimization is not enabled.

  • jit/JIT.h:

Add ARMv7 specific values of constants & register names.

  • jit/JITInlineMethods.h: (JSC::JIT::preverveReturnAddressAfterCall): (JSC::JIT::restoreReturnAddressBeforeReturn): (JSC::JIT::restoreArgumentReferenceForTrampoline):

Implement for ARMv7 (move value to/from lr).

  • jit/JITStubs.cpp:

Add JIT entry/thow trampolines, add macro to add thunk wrapper around stub routines.

  • jit/JITStubs.h: (JSC::JITStackFrame::returnAddressSlot):

Add ARMv7 stack frame object.

  • wtf/Platform.h:

Add changes necessary to allow JIT to build on this platform, disabled.

File:
1 edited

Legend:

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

    r44514 r44523  
    520520    #define ENABLE_JIT 1
    521521    #define WTF_USE_JIT_STUB_ARGUMENT_VA_LIST 1
     522#elif PLATFORM(ARM_V7) && PLATFORM(IPHONE)
     523    /* Under development, temporarily disabled until 16Mb link range limit in assembler is fixed. */
     524    #define ENABLE_JIT 0
     525    #define ENABLE_JIT_OPTIMIZE_CALL 0
     526    #define ENABLE_JIT_OPTIMIZE_NATIVE_CALL 0
     527    #define ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS 0
     528    #define ENABLE_JIT_OPTIMIZE_ARITHMETIC 0
     529    #define ENABLE_JIT_OPTIMIZE_METHOD_CALLS 0
    522530/* The JIT is tested & working on x86 Windows */
    523531#elif PLATFORM(X86) && PLATFORM(WIN)
    524532    #define ENABLE_JIT 1
    525533#endif
    526     #define ENABLE_JIT_OPTIMIZE_CALL 1
    527     #define ENABLE_JIT_OPTIMIZE_NATIVE_CALL 1
    528     #define ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS 1
    529     #define ENABLE_JIT_OPTIMIZE_ARITHMETIC 1
    530     #define ENABLE_JIT_OPTIMIZE_METHOD_CALLS 1
    531 #endif
    532 
    533 #if PLATFORM(X86_64)
    534     #define JSC_HOST_CALL
    535 #elif COMPILER(MSVC)
    536     #define JSC_HOST_CALL __fastcall
    537 #elif COMPILER(GCC) && PLATFORM(X86)
    538     #define JSC_HOST_CALL __attribute__ ((fastcall))
    539 #else
    540     #if ENABLE(JIT)
    541     #error Need to support register calling convention in this compiler
    542     #else
    543     #define JSC_HOST_CALL
    544     #endif
     534#endif
     535
     536#ifndef ENABLE_JIT_OPTIMIZE_CALL
     537#define ENABLE_JIT_OPTIMIZE_CALL 1
     538#endif
     539#ifndef ENABLE_JIT_OPTIMIZE_NATIVE_CALL
     540#define ENABLE_JIT_OPTIMIZE_NATIVE_CALL 1
     541#endif
     542#ifndef ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS
     543#define ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS 1
     544#endif
     545#ifndef ENABLE_JIT_OPTIMIZE_ARITHMETIC
     546#define ENABLE_JIT_OPTIMIZE_ARITHMETIC 1
     547#endif
     548#ifndef ENABLE_JIT_OPTIMIZE_METHOD_CALLS
     549#define ENABLE_JIT_OPTIMIZE_METHOD_CALLS 1
     550#endif
     551
     552#if PLATFORM(X86) && COMPILER(MSVC)
     553#define JSC_HOST_CALL __fastcall
     554#elif PLATFORM(X86) && COMPILER(GCC)
     555#define JSC_HOST_CALL __attribute__ ((fastcall))
     556#else
     557#define JSC_HOST_CALL
    545558#endif
    546559
Note: See TracChangeset for help on using the changeset viewer.