Changeset 173222 in webkit


Ignore:
Timestamp:
Sep 3, 2014 1:53:20 PM (10 years ago)
Author:
Julien Brianceau
Message:

Add missing implementations to fix build for sh4 architecture
https://bugs.webkit.org/show_bug.cgi?id=136455

Reviewed by Geoffrey Garen.

  • assembler/MacroAssemblerSH4.h:

(JSC::MacroAssemblerSH4::store8):
(JSC::MacroAssemblerSH4::moveWithPatch):
(JSC::MacroAssemblerSH4::branchAdd32):
(JSC::MacroAssemblerSH4::branch32WithPatch):
(JSC::MacroAssemblerSH4::abortWithReason):
(JSC::MacroAssemblerSH4::canJumpReplacePatchableBranch32WithPatch):
(JSC::MacroAssemblerSH4::startOfPatchableBranch32WithPatchOnAddress):
(JSC::MacroAssemblerSH4::revertJumpReplacementToPatchableBranch32WithPatch):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitFunctionPrologue):
(JSC::AssemblyHelpers::emitFunctionEpilogue):

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r173215 r173222  
     12014-09-03  Julien Brianceau   <jbriance@cisco.com>
     2
     3        Add missing implementations to fix build for sh4 architecture
     4        https://bugs.webkit.org/show_bug.cgi?id=136455
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        * assembler/MacroAssemblerSH4.h:
     9        (JSC::MacroAssemblerSH4::store8):
     10        (JSC::MacroAssemblerSH4::moveWithPatch):
     11        (JSC::MacroAssemblerSH4::branchAdd32):
     12        (JSC::MacroAssemblerSH4::branch32WithPatch):
     13        (JSC::MacroAssemblerSH4::abortWithReason):
     14        (JSC::MacroAssemblerSH4::canJumpReplacePatchableBranch32WithPatch):
     15        (JSC::MacroAssemblerSH4::startOfPatchableBranch32WithPatchOnAddress):
     16        (JSC::MacroAssemblerSH4::revertJumpReplacementToPatchableBranch32WithPatch):
     17        * jit/AssemblyHelpers.h:
     18        (JSC::AssemblyHelpers::emitFunctionPrologue):
     19        (JSC::AssemblyHelpers::emitFunctionEpilogue):
     20
    1212014-09-03  Dan Bernstein  <mitz@apple.com>
    222
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerSH4.h

    r168729 r173222  
    932932    }
    933933
     934    void store8(TrustedImm32 imm, Address address)
     935    {
     936        ASSERT((imm.m_value >= -128) && (imm.m_value <= 127));
     937        RegisterID dstptr = claimScratch();
     938        move(address.base, dstptr);
     939        add32(TrustedImm32(address.offset), dstptr);
     940        RegisterID srcval = claimScratch();
     941        move(imm, srcval);
     942        m_assembler.movbRegMem(srcval, dstptr);
     943        releaseScratch(dstptr);
     944        releaseScratch(srcval);
     945    }
     946
    934947    void store16(RegisterID src, BaseIndex address)
    935948    {
     
    17341747    }
    17351748
     1749    DataLabel32 moveWithPatch(TrustedImm32 initialValue, RegisterID dest)
     1750    {
     1751        m_assembler.ensureSpace(m_assembler.maxInstructionSize, sizeof(uint32_t));
     1752        DataLabel32 dataLabel(this);
     1753        m_assembler.loadConstantUnReusable(static_cast<uint32_t>(initialValue.m_value), dest);
     1754        return dataLabel;
     1755    }
     1756
    17361757    void move(RegisterID src, RegisterID dest)
    17371758    {
     
    21412162    }
    21422163
     2164    Jump branchAdd32(ResultCondition cond, Address src, RegisterID dest)
     2165    {
     2166        ASSERT((cond == Overflow) || (cond == Signed) || (cond == PositiveOrZero) || (cond == Zero) || (cond == NonZero));
     2167
     2168        if (cond == Overflow) {
     2169            RegisterID srcVal = claimScratch();
     2170            load32(src, srcVal);
     2171            m_assembler.addvlRegReg(srcVal, dest);
     2172            releaseScratch(srcVal);
     2173            return branchTrue();
     2174        }
     2175
     2176        add32(src, dest);
     2177
     2178        if ((cond == Signed) || (cond == PositiveOrZero)) {
     2179            m_assembler.cmppz(dest);
     2180            return (cond == Signed) ? branchFalse() : branchTrue();
     2181        }
     2182
     2183        compare32(0, dest, Equal);
     2184        return (cond == NonZero) ? branchFalse() : branchTrue();
     2185    }
     2186
    21432187    Jump branchMul32(ResultCondition cond, RegisterID src, RegisterID dest)
    21442188    {
     
    24202464    }
    24212465
     2466    Jump branch32WithPatch(RelationalCondition cond, Address left, DataLabel32& dataLabel, TrustedImm32 initialRightValue = TrustedImm32(0))
     2467    {
     2468        RegisterID scr = claimScratch();
     2469
     2470        m_assembler.loadConstant(left.offset, scr);
     2471        m_assembler.addlRegReg(left.base, scr);
     2472        m_assembler.movlMemReg(scr, scr);
     2473        RegisterID scr1 = claimScratch();
     2474        m_assembler.ensureSpace(m_assembler.maxInstructionSize + 10, 2 * sizeof(uint32_t));
     2475        dataLabel = moveWithPatch(initialRightValue, scr1);
     2476        m_assembler.cmplRegReg(scr1, scr, SH4Condition(cond));
     2477        releaseScratch(scr);
     2478        releaseScratch(scr1);
     2479
     2480        return (cond == NotEqual) ? branchFalse() : branchTrue();
     2481    }
     2482
    24222483    void ret()
    24232484    {
     
    24692530    }
    24702531
     2532    void abortWithReason(AbortReason reason)
     2533    {
     2534        move(TrustedImm32(reason), SH4Registers::r0);
     2535        breakpoint();
     2536    }
     2537
     2538    void abortWithReason(AbortReason reason, intptr_t misc)
     2539    {
     2540        move(TrustedImm32(misc), SH4Registers::r1);
     2541        abortWithReason(reason);
     2542    }
     2543
    24712544    static FunctionPtr readCallTarget(CodeLocationCall call)
    24722545    {
     
    24862559    static bool canJumpReplacePatchableBranchPtrWithPatch() { return false; }
    24872560
     2561    static bool canJumpReplacePatchableBranch32WithPatch() { return false; }
     2562
    24882563    static CodeLocationLabel startOfBranchPtrWithPatchOnRegister(CodeLocationDataLabelPtr label)
    24892564    {
     
    25022577    }
    25032578
     2579    static CodeLocationLabel startOfPatchableBranch32WithPatchOnAddress(CodeLocationDataLabel32)
     2580    {
     2581        UNREACHABLE_FOR_PLATFORM();
     2582        return CodeLocationLabel();
     2583    }
     2584
    25042585    static void revertJumpReplacementToPatchableBranchPtrWithPatch(CodeLocationLabel, Address, void*)
     2586    {
     2587        UNREACHABLE_FOR_PLATFORM();
     2588    }
     2589
     2590    static void revertJumpReplacementToPatchableBranch32WithPatch(CodeLocationLabel, Address, int32_t)
    25052591    {
    25062592        UNREACHABLE_FOR_PLATFORM();
  • trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h

    r173069 r173222  
    224224    }
    225225
     226    void emitFunctionPrologue()
     227    {
     228        push(linkRegister);
     229        push(framePointerRegister);
     230        move(stackPointerRegister, framePointerRegister);
     231    }
     232
     233    void emitFunctionEpilogue()
     234    {
     235        move(framePointerRegister, stackPointerRegister);
     236        pop(framePointerRegister);
     237        pop(linkRegister);
     238    }
     239
    226240    ALWAYS_INLINE void preserveReturnAddressAfterCall(RegisterID reg)
    227241    {
Note: See TracChangeset for help on using the changeset viewer.