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