Changeset 47530 in webkit for trunk/JavaScriptCore/assembler/MacroAssemblerX86_64.h
- Timestamp:
- Aug 19, 2009, 5:02:24 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/MacroAssemblerX86_64.h
r46598 r47530 39 39 class MacroAssemblerX86_64 : public MacroAssemblerX86Common { 40 40 protected: 41 static const X86 ::RegisterID scratchRegister = X86::r11;41 static const X86Registers::RegisterID scratchRegister = X86Registers::r11; 42 42 43 43 public: … … 80 80 void load32(void* address, RegisterID dest) 81 81 { 82 if (dest == X86 ::eax)82 if (dest == X86Registers::eax) 83 83 m_assembler.movl_mEAX(address); 84 84 else { 85 move(X86 ::eax, dest);85 move(X86Registers::eax, dest); 86 86 m_assembler.movl_mEAX(address); 87 swap(X86 ::eax, dest);87 swap(X86Registers::eax, dest); 88 88 } 89 89 } … … 103 103 void store32(Imm32 imm, void* address) 104 104 { 105 move(X86 ::eax, scratchRegister);106 move(imm, X86 ::eax);105 move(X86Registers::eax, scratchRegister); 106 move(imm, X86Registers::eax); 107 107 m_assembler.movl_EAXm(address); 108 move(scratchRegister, X86 ::eax);108 move(scratchRegister, X86Registers::eax); 109 109 } 110 110 … … 197 197 // On x86 we can only shift by ecx; if asked to shift by another register we'll 198 198 // need rejig the shift amount into ecx first, and restore the registers afterwards. 199 if (shift_amount != X86 ::ecx) {200 swap(shift_amount, X86 ::ecx);199 if (shift_amount != X86Registers::ecx) { 200 swap(shift_amount, X86Registers::ecx); 201 201 202 202 // E.g. transform "shll %eax, %eax" -> "xchgl %eax, %ecx; shll %ecx, %ecx; xchgl %eax, %ecx" 203 203 if (dest == shift_amount) 204 m_assembler.sarq_CLr(X86 ::ecx);204 m_assembler.sarq_CLr(X86Registers::ecx); 205 205 // E.g. transform "shll %eax, %ecx" -> "xchgl %eax, %ecx; shll %ecx, %eax; xchgl %eax, %ecx" 206 else if (dest == X86 ::ecx)206 else if (dest == X86Registers::ecx) 207 207 m_assembler.sarq_CLr(shift_amount); 208 208 // E.g. transform "shll %eax, %ebx" -> "xchgl %eax, %ecx; shll %ecx, %ebx; xchgl %eax, %ecx" … … 210 210 m_assembler.sarq_CLr(dest); 211 211 212 swap(shift_amount, X86 ::ecx);212 swap(shift_amount, X86Registers::ecx); 213 213 } else 214 214 m_assembler.sarq_CLr(dest); … … 259 259 void loadPtr(void* address, RegisterID dest) 260 260 { 261 if (dest == X86 ::eax)261 if (dest == X86Registers::eax) 262 262 m_assembler.movq_mEAX(address); 263 263 else { 264 move(X86 ::eax, dest);264 move(X86Registers::eax, dest); 265 265 m_assembler.movq_mEAX(address); 266 swap(X86 ::eax, dest);266 swap(X86Registers::eax, dest); 267 267 } 268 268 } … … 286 286 void storePtr(RegisterID src, void* address) 287 287 { 288 if (src == X86 ::eax)288 if (src == X86Registers::eax) 289 289 m_assembler.movq_EAXm(address); 290 290 else { 291 swap(X86 ::eax, src);291 swap(X86Registers::eax, src); 292 292 m_assembler.movq_EAXm(address); 293 swap(X86 ::eax, src);293 swap(X86Registers::eax, src); 294 294 } 295 295 }
Note:
See TracChangeset
for help on using the changeset viewer.