Ignore:
Timestamp:
May 24, 2012, 2:14:07 PM (13 years ago)
Author:
[email protected]
Message:

Move cacheFlush from ExecutableAllocator to Assembler classes
https://bugs.webkit.org/show_bug.cgi?id=87420

Reviewed by Oliver Hunt.

Makes more sense there, & remove a pile of #ifdefs.

  • assembler/ARMAssembler.cpp:

(JSC):
(JSC::ARMAssembler::cacheFlush):

  • assembler/ARMAssembler.h:

(ARMAssembler):
(JSC::ARMAssembler::cacheFlush):

  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::relinkJump):
(JSC::ARMv7Assembler::cacheFlush):
(ARMv7Assembler):
(JSC::ARMv7Assembler::setInt32):
(JSC::ARMv7Assembler::setUInt7ForLoad):

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::cacheFlush):

  • assembler/LinkBuffer.h:

(JSC::LinkBuffer::performFinalization):

  • assembler/MIPSAssembler.h:

(JSC::MIPSAssembler::relinkJump):
(JSC::MIPSAssembler::relinkCall):
(JSC::MIPSAssembler::repatchInt32):
(JSC::MIPSAssembler::cacheFlush):
(MIPSAssembler):

  • assembler/SH4Assembler.h:

(JSC::SH4Assembler::repatchCompact):
(JSC::SH4Assembler::cacheFlush):
(SH4Assembler):

  • assembler/X86Assembler.h:

(X86Assembler):
(JSC::X86Assembler::cacheFlush):

  • jit/ExecutableAllocator.cpp:

(JSC):

  • jit/ExecutableAllocator.h:

(ExecutableAllocator):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/ARMAssembler.h

    r109307 r118413  
    865865        }
    866866
     867#if OS(LINUX) && COMPILER(RVCT)
     868        static __asm void cacheFlush(void* code, size_t);
     869#else
     870        static void cacheFlush(void* code, size_t size)
     871        {
     872#if OS(LINUX) && COMPILER(GCC)
     873            uintptr_t currentPage = reinterpret_cast<uintptr_t>(code) & ~(pageSize() - 1);
     874            uintptr_t lastPage = (reinterpret_cast<uintptr_t>(code) + size) & ~(pageSize() - 1);
     875            do {
     876                asm volatile(
     877                    "push    {r7}\n"
     878                    "mov     r0, %0\n"
     879                    "mov     r1, %1\n"
     880                    "mov     r7, #0xf0000\n"
     881                    "add     r7, r7, #0x2\n"
     882                    "mov     r2, #0x0\n"
     883                    "svc     0x0\n"
     884                    "pop     {r7}\n"
     885                    :
     886                    : "r" (currentPage), "r" (currentPage + pageSize())
     887                    : "r0", "r1", "r2");
     888                currentPage += pageSize();
     889            } while (lastPage >= currentPage);
     890#elif OS(WINCE)
     891            CacheRangeFlush(code, size, CACHE_SYNC_ALL);
     892#elif OS(QNX) && ENABLE(ASSEMBLER_WX_EXCLUSIVE)
     893            UNUSED_PARAM(code);
     894            UNUSED_PARAM(size);
     895#elif OS(QNX)
     896            msync(code, size, MS_INVALIDATE_ICACHE);
     897#else
     898#error "The cacheFlush support is missing on this platform."
     899#endif
     900        }
     901#endif
     902
    867903    private:
    868904        ARMWord RM(int reg)
Note: See TracChangeset for help on using the changeset viewer.