Revision: 6789
Author: [email protected]
Date: Tue Feb 15 04:17:53 2011
Log: X64 Crankshaft: Fix another error in pushed registers at safepoints.
Review URL: http://codereview.chromium.org/6525014
http://code.google.com/p/v8/source/detail?r=6789

Modified:
 /branches/bleeding_edge/src/x64/macro-assembler-x64.cc

=======================================
--- /branches/bleeding_edge/src/x64/macro-assembler-x64.cc Mon Feb 14 10:34:05 2011 +++ /branches/bleeding_edge/src/x64/macro-assembler-x64.cc Tue Feb 15 04:17:53 2011
@@ -1443,13 +1443,15 @@
   push(r14);
   // r15 is kSmiConstantRegister
   STATIC_ASSERT(11 == kNumSafepointSavedRegisters);
-  subq(rsp, Immediate(
- (kNumSafepointRegisters-kNumSafepointSavedRegisters) * kPointerSize));
+  // Use lea for symmetry with Popad.
+  lea(rsp, Operand(rsp,
+ -(kNumSafepointRegisters-kNumSafepointSavedRegisters) * kPointerSize));
 }


 void MacroAssembler::Popad() {
-  addq(rsp, Immediate(
+  // Popad must not change the flags, so use lea instead of addq.
+  lea(rsp, Operand(rsp,
(kNumSafepointRegisters-kNumSafepointSavedRegisters) * kPointerSize));
   pop(r14);
   pop(r12);

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to