Changeset 91678 in webkit
- Timestamp:
- Jul 25, 2011, 10:59:08 AM (14 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r91660 r91678 1 2011-07-25 Filip Pizlo <fpizlo@apple.com> 2 3 X86-64 assembler emits three instructions instead of two for certain 4 loads and stores. 5 https://bugs.webkit.org/show_bug.cgi?id=65095 6 7 Reviewed by Gavin Barraclough. 8 9 Simply made these four methods in the assembler use the scratch register, 10 which they were previously avoiding. It still optimizes for the case where 11 an absolute address memory accesses is using EAX. This results in a slight 12 performance improvement. 13 14 * assembler/MacroAssemblerX86_64.h: 15 (JSC::MacroAssemblerX86_64::load32): 16 (JSC::MacroAssemblerX86_64::store32): 17 (JSC::MacroAssemblerX86_64::loadPtr): 18 (JSC::MacroAssemblerX86_64::storePtr): 19 1 20 2011-07-25 Ryuan Choi <ryuan.choi@samsung.com> 2 21 -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h
r90237 r91678 82 82 m_assembler.movl_mEAX(address); 83 83 else { 84 move(X86Registers::eax, dest); 85 m_assembler.movl_mEAX(address); 86 swap(X86Registers::eax, dest); 84 move(TrustedImmPtr(address), dest); 85 load32(dest, dest); 87 86 } 88 87 } … … 108 107 void store32(TrustedImm32 imm, void* address) 109 108 { 110 move(X86Registers::eax, scratchRegister); 111 move(imm, X86Registers::eax); 112 m_assembler.movl_EAXm(address); 113 move(scratchRegister, X86Registers::eax); 109 move(TrustedImmPtr(address), scratchRegister); 110 store32(imm, scratchRegister); 114 111 } 115 112 … … 258 255 m_assembler.movq_mEAX(address); 259 256 else { 260 move(X86Registers::eax, dest); 261 m_assembler.movq_mEAX(address); 262 swap(X86Registers::eax, dest); 257 move(TrustedImmPtr(address), dest); 258 loadPtr(dest, dest); 263 259 } 264 260 } … … 291 287 m_assembler.movq_EAXm(address); 292 288 else { 293 swap(X86Registers::eax, src); 294 m_assembler.movq_EAXm(address); 295 swap(X86Registers::eax, src); 289 move(TrustedImmPtr(address), scratchRegister); 290 storePtr(src, scratchRegister); 296 291 } 297 292 }
Note:
See TracChangeset
for help on using the changeset viewer.