Changeset 195182 in webkit
- Timestamp:
- Jan 17, 2016 1:15:45 AM (8 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r195178 r195182 1 2016-01-17 Julien Brianceau <jbriance@cisco.com> 2 3 [mips] Fix regT2 and regT3 trampling in MacroAssembler 4 https://bugs.webkit.org/show_bug.cgi?id=153131 5 6 Mips $t2 and $t3 registers were used as temporary registers 7 in MacroAssemblerMIPS.h, whereas they are mapped to regT2 8 and regT3 in LLInt and GPRInfo. 9 10 This patch rearranges register mapping for the mips architecture: 11 - use $t0 and $t1 as temp registers in LLInt (as in MacroAssembler) 12 - use $t7 and $t8 as temp registers in MacroAssembler (as in LLInt) 13 - remove $t6 from temp registers list in LLInt 14 - update GPRInfo.h accordingly 15 - add mips macroScratchRegisters() list in RegisterSet.cpp 16 17 Reviewed by Michael Saboff. 18 19 * assembler/MacroAssemblerMIPS.h: 20 * jit/GPRInfo.h: 21 (JSC::GPRInfo::toRegister): 22 (JSC::GPRInfo::toIndex): 23 * jit/RegisterSet.cpp: 24 (JSC::RegisterSet::macroScratchRegisters): 25 (JSC::RegisterSet::calleeSaveRegisters): 26 * offlineasm/mips.rb: 27 1 28 2016-01-16 Skachkov Oleksandr <gskachkov@gmail.com> 2 29 -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
r195134 r195182 56 56 static const RegisterID dataTempRegister = MIPSRegisters::t1; 57 57 // For storing address base 58 static const RegisterID addrTempRegister = MIPSRegisters::t 2;58 static const RegisterID addrTempRegister = MIPSRegisters::t7; 59 59 // For storing compare result 60 static const RegisterID cmpTempRegister = MIPSRegisters::t 3;60 static const RegisterID cmpTempRegister = MIPSRegisters::t8; 61 61 62 62 // FP temp register -
trunk/Source/JavaScriptCore/jit/GPRInfo.h
r194894 r195182 737 737 public: 738 738 typedef GPRReg RegisterType; 739 static const unsigned numberOfRegisters = 8;739 static const unsigned numberOfRegisters = 7; 740 740 static const unsigned numberOfArgumentRegisters = NUMBER_OF_ARGUMENT_REGISTERS; 741 741 … … 750 750 static const GPRReg regT4 = MIPSRegisters::t4; 751 751 static const GPRReg regT5 = MIPSRegisters::t5; 752 static const GPRReg regT6 = MIPSRegisters::t0; 753 static const GPRReg regT7 = MIPSRegisters::t1; 752 static const GPRReg regT6 = MIPSRegisters::t6; 754 753 // These registers match the baseline JIT. 755 754 static const GPRReg callFrameRegister = MIPSRegisters::fp; … … 767 766 { 768 767 ASSERT(index < numberOfRegisters); 769 static const GPRReg registerForIndex[numberOfRegisters] = { regT0, regT1, regT2, regT3, regT4, regT5, regT6 , regT7};768 static const GPRReg registerForIndex[numberOfRegisters] = { regT0, regT1, regT2, regT3, regT4, regT5, regT6 }; 770 769 return registerForIndex[index]; 771 770 } … … 781 780 { 782 781 ASSERT(reg != InvalidGPRReg); 783 ASSERT(reg < 24);784 static const unsigned indexForRegister[ 24] = {782 ASSERT(reg < 32); 783 static const unsigned indexForRegister[32] = { 785 784 InvalidIndex, InvalidIndex, 0, 1, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, 786 6, 7, 2, 3, 4, 5, InvalidIndex, InvalidIndex, 785 InvalidIndex, InvalidIndex, 2, 3, 4, 5, 6, InvalidIndex, 786 InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, 787 787 InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex 788 788 }; -
trunk/Source/JavaScriptCore/jit/RegisterSet.cpp
r194530 r195182 87 87 #elif CPU(ARM64) 88 88 return RegisterSet(MacroAssembler::dataTempRegister, MacroAssembler::memoryTempRegister); 89 #elif CPU(MIPS) 90 RegisterSet result; 91 result.set(MacroAssembler::immTempRegister); 92 result.set(MacroAssembler::dataTempRegister); 93 result.set(MacroAssembler::addrTempRegister); 94 result.set(MacroAssembler::cmpTempRegister); 95 return result; 89 96 #else 90 97 return RegisterSet(); … … 142 149 reg = static_cast<ARM64Registers::FPRegisterID>(reg + 1)) 143 150 result.set(reg); 151 #elif CPU(MIPS) 144 152 #else 145 153 UNREACHABLE_FOR_PLATFORM(); -
trunk/Source/JavaScriptCore/offlineasm/mips.rb
r194725 r195182 33 33 # $v0 => t0, r0 34 34 # $v1 => t1, r1 35 # $t0 => (scratch) 36 # $t1 => (scratch) 35 37 # $t2 => t2 36 38 # $t3 => t3 37 39 # $t4 => t4 38 40 # $t5 => t5 39 # $t6 => (scratch)41 # $t6 => t6 40 42 # $t7 => (scratch) 41 43 # $t8 => (scratch) … … 93 95 end 94 96 95 MIPS_TEMP_GPRS = [SpecialRegister.new("$t 6"), SpecialRegister.new("$t7"), SpecialRegister.new("$t8")]97 MIPS_TEMP_GPRS = [SpecialRegister.new("$t0"), SpecialRegister.new("$t1"), SpecialRegister.new("$t7"), SpecialRegister.new("$t8")] 96 98 MIPS_ZERO_REG = SpecialRegister.new("$zero") 97 99 MIPS_GP_REG = SpecialRegister.new("$gp")
Note: See TracChangeset
for help on using the changeset viewer.