Changeset 63228 in webkit for trunk/JavaScriptCore
- Timestamp:
- Jul 13, 2010, 11:56:18 AM (15 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r63120 r63228 1 2010-07-13 Gabor Loki <[email protected]> 2 3 Reviewed by Gavin Barraclough. 4 5 Fix the constant encoding in data transfer instructions on ARM 6 https://bugs.webkit.org/show_bug.cgi?id=42166 7 8 The getImm function is designed to produce modified immediate constant 9 for data processing instructions. It should not be used to encode 10 any constant for data transfer. In the current situation there is no 11 way to use any immediate constant for data transfer. So, the moveImm 12 function is the desired method to pass the offset value to the data 13 transfer instructions. 14 15 Reported by Jacob Bramley. 16 17 * assembler/ARMAssembler.cpp: 18 (JSC::ARMAssembler::dataTransfer32): 19 * assembler/MacroAssemblerARM.h: 20 (JSC::MacroAssemblerARM::call32): 21 1 22 2010-07-09 Darin Adler <[email protected]> 2 23 -
trunk/JavaScriptCore/assembler/ARMAssembler.cpp
r58091 r63228 273 273 dtr_u(isLoad, srcDst, ARMRegisters::S0, (offset & 0xfff) | transferFlag); 274 274 } else { 275 ARMWord reg = getImm(offset, ARMRegisters::S0);276 dtr_ur(isLoad, srcDst, base, reg| transferFlag);275 moveImm(offset, ARMRegisters::S0); 276 dtr_ur(isLoad, srcDst, base, ARMRegisters::S0 | transferFlag); 277 277 } 278 278 } else { … … 284 284 dtr_d(isLoad, srcDst, ARMRegisters::S0, (offset & 0xfff) | transferFlag); 285 285 } else { 286 ARMWord reg = getImm(offset, ARMRegisters::S0);287 dtr_dr(isLoad, srcDst, base, reg| transferFlag);286 moveImm(offset, ARMRegisters::S0); 287 dtr_dr(isLoad, srcDst, base, ARMRegisters::S0 | transferFlag); 288 288 } 289 289 } -
trunk/JavaScriptCore/assembler/MacroAssemblerARM.h
r62306 r63228 957 957 m_assembler.dtr_u(true, targetReg, tmpReg, offset & 0xfff); 958 958 } else { 959 ARMWord reg = m_assembler.getImm(offset, tmpReg);959 m_assembler.moveImm(offset, tmpReg); 960 960 prepareCall(); 961 m_assembler.dtr_ur(true, targetReg, base, reg);961 m_assembler.dtr_ur(true, targetReg, base, tmpReg); 962 962 } 963 963 } else { … … 971 971 m_assembler.dtr_d(true, targetReg, tmpReg, offset & 0xfff); 972 972 } else { 973 ARMWord reg = m_assembler.getImm(offset, tmpReg);973 m_assembler.moveImm(offset, tmpReg); 974 974 prepareCall(); 975 m_assembler.dtr_dr(true, targetReg, base, reg);975 m_assembler.dtr_dr(true, targetReg, base, tmpReg); 976 976 } 977 977 }
Note:
See TracChangeset
for help on using the changeset viewer.