Reviewers: Lasse Reichstein,

Description:
X64 Crankshaft: Fix another error in pushed registers at safepoints.

Please review this at http://codereview.chromium.org/6525014/

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
  M     src/x64/macro-assembler-x64.cc


Index: src/x64/macro-assembler-x64.cc
===================================================================
--- src/x64/macro-assembler-x64.cc      (revision 6786)
+++ src/x64/macro-assembler-x64.cc      (working copy)
@@ -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