Changeset 173222 in webkit
- Timestamp:
- Sep 3, 2014 1:53:20 PM (10 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r173215 r173222 1 2014-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 1 21 2014-09-03 Dan Bernstein <mitz@apple.com> 2 22 -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerSH4.h
r168729 r173222 932 932 } 933 933 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 934 947 void store16(RegisterID src, BaseIndex address) 935 948 { … … 1734 1747 } 1735 1748 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 1736 1757 void move(RegisterID src, RegisterID dest) 1737 1758 { … … 2141 2162 } 2142 2163 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 2143 2187 Jump branchMul32(ResultCondition cond, RegisterID src, RegisterID dest) 2144 2188 { … … 2420 2464 } 2421 2465 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 2422 2483 void ret() 2423 2484 { … … 2469 2530 } 2470 2531 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 2471 2544 static FunctionPtr readCallTarget(CodeLocationCall call) 2472 2545 { … … 2486 2559 static bool canJumpReplacePatchableBranchPtrWithPatch() { return false; } 2487 2560 2561 static bool canJumpReplacePatchableBranch32WithPatch() { return false; } 2562 2488 2563 static CodeLocationLabel startOfBranchPtrWithPatchOnRegister(CodeLocationDataLabelPtr label) 2489 2564 { … … 2502 2577 } 2503 2578 2579 static CodeLocationLabel startOfPatchableBranch32WithPatchOnAddress(CodeLocationDataLabel32) 2580 { 2581 UNREACHABLE_FOR_PLATFORM(); 2582 return CodeLocationLabel(); 2583 } 2584 2504 2585 static void revertJumpReplacementToPatchableBranchPtrWithPatch(CodeLocationLabel, Address, void*) 2586 { 2587 UNREACHABLE_FOR_PLATFORM(); 2588 } 2589 2590 static void revertJumpReplacementToPatchableBranch32WithPatch(CodeLocationLabel, Address, int32_t) 2505 2591 { 2506 2592 UNREACHABLE_FOR_PLATFORM(); -
trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h
r173069 r173222 224 224 } 225 225 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 226 240 ALWAYS_INLINE void preserveReturnAddressAfterCall(RegisterID reg) 227 241 {
Note: See TracChangeset
for help on using the changeset viewer.