Ignore:
Timestamp:
Aug 14, 2013, 9:51:10 AM (12 years ago)
Author:
[email protected]
Message:

DFG_JIT implementation for sh4 architecture.
https://bugs.webkit.org/show_bug.cgi?id=119737

Patch by Julien Brianceau <[email protected]> on 2013-08-14
Reviewed by Oliver Hunt.

Source/JavaScriptCore:

  • assembler/MacroAssemblerSH4.h:

(JSC::MacroAssemblerSH4::invert):
(JSC::MacroAssemblerSH4::add32):
(JSC::MacroAssemblerSH4::and32):
(JSC::MacroAssemblerSH4::lshift32):
(JSC::MacroAssemblerSH4::mul32):
(JSC::MacroAssemblerSH4::or32):
(JSC::MacroAssemblerSH4::rshift32):
(JSC::MacroAssemblerSH4::sub32):
(JSC::MacroAssemblerSH4::xor32):
(JSC::MacroAssemblerSH4::store32):
(JSC::MacroAssemblerSH4::swapDouble):
(JSC::MacroAssemblerSH4::storeDouble):
(JSC::MacroAssemblerSH4::subDouble):
(JSC::MacroAssemblerSH4::mulDouble):
(JSC::MacroAssemblerSH4::divDouble):
(JSC::MacroAssemblerSH4::negateDouble):
(JSC::MacroAssemblerSH4::zeroExtend32ToPtr):
(JSC::MacroAssemblerSH4::branchTruncateDoubleToUint32):
(JSC::MacroAssemblerSH4::truncateDoubleToUint32):
(JSC::MacroAssemblerSH4::swap):
(JSC::MacroAssemblerSH4::jump):
(JSC::MacroAssemblerSH4::branchNeg32):
(JSC::MacroAssemblerSH4::branchAdd32):
(JSC::MacroAssemblerSH4::branchMul32):
(JSC::MacroAssemblerSH4::urshift32):

  • assembler/SH4Assembler.h:

(JSC::SH4Assembler::SH4Assembler):
(JSC::SH4Assembler::labelForWatchpoint):
(JSC::SH4Assembler::label):
(JSC::SH4Assembler::debugOffset):

  • dfg/DFGAssemblyHelpers.h:

(JSC::DFG::AssemblyHelpers::preserveReturnAddressAfterCall):
(JSC::DFG::AssemblyHelpers::restoreReturnAddressBeforeReturn):
(JSC::DFG::AssemblyHelpers::debugCall):

  • dfg/DFGCCallHelpers.h:

(JSC::DFG::CCallHelpers::setupArguments):
(JSC::DFG::CCallHelpers::setupArgumentsWithExecState):

  • dfg/DFGFPRInfo.h:

(JSC::DFG::FPRInfo::toRegister):
(JSC::DFG::FPRInfo::toIndex):
(JSC::DFG::FPRInfo::debugName):

  • dfg/DFGGPRInfo.h:

(JSC::DFG::GPRInfo::toRegister):
(JSC::DFG::GPRInfo::toIndex):
(JSC::DFG::GPRInfo::debugName):

  • dfg/DFGOperations.cpp:
  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • jit/JITStubs.h:
  • jit/JITStubsSH4.h:

Source/WTF:

  • wtf/Platform.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h

    r153177 r154052  
    112112#endif
    113113
     114#if CPU(SH4)
     115    ALWAYS_INLINE void preserveReturnAddressAfterCall(RegisterID reg)
     116    {
     117        m_assembler.stspr(reg);
     118    }
     119
     120    ALWAYS_INLINE void restoreReturnAddressBeforeReturn(RegisterID reg)
     121    {
     122        m_assembler.ldspr(reg);
     123    }
     124
     125    ALWAYS_INLINE void restoreReturnAddressBeforeReturn(Address address)
     126    {
     127        loadPtrLinkReg(address);
     128    }
     129#endif
     130
    114131    void emitGetFromCallFrameHeaderPtr(JSStack::CallFrameHeaderEntry entry, GPRReg to)
    115132    {
     
    212229        storePtr(TrustedImmPtr(scratchSize), GPRInfo::regT0);
    213230
    214 #if CPU(X86_64) || CPU(ARM) || CPU(MIPS)
     231#if CPU(X86_64) || CPU(ARM) || CPU(MIPS) || CPU(SH4)
    215232        move(TrustedImmPtr(buffer), GPRInfo::argumentGPR2);
    216233        move(TrustedImmPtr(argument), GPRInfo::argumentGPR1);
    217234        move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR0);
    218         GPRReg scratch = selectScratchGPR(GPRInfo::argumentGPR0, GPRInfo::argumentGPR1);
     235        GPRReg scratch = selectScratchGPR(GPRInfo::argumentGPR0, GPRInfo::argumentGPR1, GPRInfo::argumentGPR2);
    219236#elif CPU(X86)
    220237        poke(GPRInfo::callFrameRegister, 0);
Note: See TracChangeset for help on using the changeset viewer.