diff options
Diffstat (limited to 'Source/JavaScriptCore/assembler/MacroAssemblerSH4.h')
-rw-r--r-- | Source/JavaScriptCore/assembler/MacroAssemblerSH4.h | 116 |
1 files changed, 15 insertions, 101 deletions
diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerSH4.h b/Source/JavaScriptCore/assembler/MacroAssemblerSH4.h index 6857c60a4..32ea2b1b5 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerSH4.h +++ b/Source/JavaScriptCore/assembler/MacroAssemblerSH4.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2013 Cisco Systems, Inc. All rights reserved. * Copyright (C) 2009-2011 STMicroelectronics. All rights reserved. - * Copyright (C) 2008, 2014 Apple Inc. All rights reserved. + * Copyright (C) 2008 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -36,7 +36,7 @@ namespace JSC { -class MacroAssemblerSH4 : public AbstractMacroAssembler<SH4Assembler, MacroAssemblerSH4> { +class MacroAssemblerSH4 : public AbstractMacroAssembler<SH4Assembler> { public: typedef SH4Assembler::FPRegisterID FPRegisterID; @@ -718,13 +718,13 @@ public: m_assembler.extub(dest, dest); } - void load8SignedExtendTo32(BaseIndex address, RegisterID dest) + void load8Signed(BaseIndex address, RegisterID dest) { RegisterID scr = claimScratch(); move(address.index, scr); lshift32(TrustedImm32(address.scale), scr); add32(address.base, scr); - load8SignedExtendTo32(scr, address.offset, dest); + load8Signed(scr, address.offset, dest); releaseScratch(scr); } @@ -770,7 +770,7 @@ public: releaseScratch(scr); } - void load8SignedExtendTo32(RegisterID base, int offset, RegisterID dest) + void load8Signed(RegisterID base, int offset, RegisterID dest) { if (!offset) { m_assembler.movbMemReg(base, dest); @@ -798,7 +798,7 @@ public: void load8(RegisterID base, int offset, RegisterID dest) { - load8SignedExtendTo32(base, offset, dest); + load8Signed(base, offset, dest); m_assembler.extub(dest, dest); } @@ -858,14 +858,14 @@ public: m_assembler.extuw(dest, dest); } - void load16SignedExtendTo32(RegisterID src, RegisterID dest) + void load16Signed(RegisterID src, RegisterID dest) { m_assembler.movwMemReg(src, dest); } void load16(BaseIndex address, RegisterID dest) { - load16SignedExtendTo32(address, dest); + load16Signed(address, dest); m_assembler.extuw(dest, dest); } @@ -875,7 +875,7 @@ public: m_assembler.extuw(dest, dest); } - void load16SignedExtendTo32(BaseIndex address, RegisterID dest) + void load16Signed(BaseIndex address, RegisterID dest) { RegisterID scr = claimScratch(); @@ -887,7 +887,7 @@ public: m_assembler.movwR0mr(scr, dest); else { add32(address.base, scr); - load16SignedExtendTo32(scr, dest); + load16Signed(scr, dest); } releaseScratch(scr); @@ -931,19 +931,6 @@ public: releaseScratch(srcval); } - void store8(TrustedImm32 imm, Address address) - { - ASSERT((imm.m_value >= -128) && (imm.m_value <= 127)); - RegisterID dstptr = claimScratch(); - move(address.base, dstptr); - add32(TrustedImm32(address.offset), dstptr); - RegisterID srcval = claimScratch(); - move(imm, srcval); - m_assembler.movbRegMem(srcval, dstptr); - releaseScratch(dstptr); - releaseScratch(srcval); - } - void store16(RegisterID src, BaseIndex address) { RegisterID scr = claimScratch(); @@ -1168,10 +1155,10 @@ public: releaseScratch(scr); } - void loadDouble(TrustedImmPtr address, FPRegisterID dest) + void loadDouble(const void* address, FPRegisterID dest) { RegisterID scr = claimScratch(); - move(address, scr); + move(TrustedImmPtr(address), scr); m_assembler.fmovsReadrminc(scr, (FPRegisterID)(dest + 1)); m_assembler.fmovsReadrm(scr, dest); releaseScratch(scr); @@ -1217,10 +1204,10 @@ public: } } - void storeDouble(FPRegisterID src, TrustedImmPtr address) + void storeDouble(FPRegisterID src, const void* address) { RegisterID scr = claimScratch(); - m_assembler.loadConstant(reinterpret_cast<uint32_t>(const_cast<void*>(address.m_value)) + 8, scr); + m_assembler.loadConstant(reinterpret_cast<uint32_t>(const_cast<void*>(address)) + 8, scr); m_assembler.fmovsWriterndec(src, scr); m_assembler.fmovsWriterndec((FPRegisterID)(src + 1), scr); releaseScratch(scr); @@ -1233,7 +1220,7 @@ public: void addDouble(AbsoluteAddress address, FPRegisterID dest) { - loadDouble(TrustedImmPtr(address.m_ptr), fscratch); + loadDouble(address.m_ptr, fscratch); addDouble(fscratch, dest); } @@ -1746,14 +1733,6 @@ public: return dataLabel; } - DataLabel32 moveWithPatch(TrustedImm32 initialValue, RegisterID dest) - { - m_assembler.ensureSpace(m_assembler.maxInstructionSize, sizeof(uint32_t)); - DataLabel32 dataLabel(this); - m_assembler.loadConstantUnReusable(static_cast<uint32_t>(initialValue.m_value), dest); - return dataLabel; - } - void move(RegisterID src, RegisterID dest) { if (src != dest) @@ -2161,29 +2140,6 @@ public: return result ? branchTrue() : branchFalse(); } - Jump branchAdd32(ResultCondition cond, Address src, RegisterID dest) - { - ASSERT((cond == Overflow) || (cond == Signed) || (cond == PositiveOrZero) || (cond == Zero) || (cond == NonZero)); - - if (cond == Overflow) { - RegisterID srcVal = claimScratch(); - load32(src, srcVal); - m_assembler.addvlRegReg(srcVal, dest); - releaseScratch(srcVal); - return branchTrue(); - } - - add32(src, dest); - - if ((cond == Signed) || (cond == PositiveOrZero)) { - m_assembler.cmppz(dest); - return (cond == Signed) ? branchFalse() : branchTrue(); - } - - compare32(0, dest, Equal); - return (cond == NonZero) ? branchFalse() : branchTrue(); - } - Jump branchMul32(ResultCondition cond, RegisterID src, RegisterID dest) { ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); @@ -2463,23 +2419,6 @@ public: return branchTrue(); } - Jump branch32WithPatch(RelationalCondition cond, Address left, DataLabel32& dataLabel, TrustedImm32 initialRightValue = TrustedImm32(0)) - { - RegisterID scr = claimScratch(); - - m_assembler.loadConstant(left.offset, scr); - m_assembler.addlRegReg(left.base, scr); - m_assembler.movlMemReg(scr, scr); - RegisterID scr1 = claimScratch(); - m_assembler.ensureSpace(m_assembler.maxInstructionSize + 10, 2 * sizeof(uint32_t)); - dataLabel = moveWithPatch(initialRightValue, scr1); - m_assembler.cmplRegReg(scr1, scr, SH4Condition(cond)); - releaseScratch(scr); - releaseScratch(scr1); - - return (cond == NotEqual) ? branchFalse() : branchTrue(); - } - void ret() { m_assembler.ret(); @@ -2529,18 +2468,6 @@ public: m_assembler.synco(); } - void abortWithReason(AbortReason reason) - { - move(TrustedImm32(reason), SH4Registers::r0); - breakpoint(); - } - - void abortWithReason(AbortReason reason, intptr_t misc) - { - move(TrustedImm32(misc), SH4Registers::r1); - abortWithReason(reason); - } - static FunctionPtr readCallTarget(CodeLocationCall call) { return FunctionPtr(reinterpret_cast<void(*)()>(SH4Assembler::readCallTarget(call.dataLocation()))); @@ -2558,8 +2485,6 @@ public: static bool canJumpReplacePatchableBranchPtrWithPatch() { return false; } - static bool canJumpReplacePatchableBranch32WithPatch() { return false; } - static CodeLocationLabel startOfBranchPtrWithPatchOnRegister(CodeLocationDataLabelPtr label) { return label.labelAtOffset(0); @@ -2576,22 +2501,11 @@ public: return CodeLocationLabel(); } - static CodeLocationLabel startOfPatchableBranch32WithPatchOnAddress(CodeLocationDataLabel32) - { - UNREACHABLE_FOR_PLATFORM(); - return CodeLocationLabel(); - } - static void revertJumpReplacementToPatchableBranchPtrWithPatch(CodeLocationLabel, Address, void*) { UNREACHABLE_FOR_PLATFORM(); } - static void revertJumpReplacementToPatchableBranch32WithPatch(CodeLocationLabel, Address, int32_t) - { - UNREACHABLE_FOR_PLATFORM(); - } - protected: SH4Assembler::Condition SH4Condition(RelationalCondition cond) { |