Reviewers: Kevin Millikin,
Description:
X64 Crankshaft: Fix bug in pushed registers at safepoints. Fixes issue 1153
completely.
BUG=1153
TEST=mjsunit/mul-exhaustive
[email protected]
Please review this at http://codereview.chromium.org/6475012/
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M src/x64/macro-assembler-x64.h
M src/x64/macro-assembler-x64.cc
Index: src/x64/macro-assembler-x64.cc
===================================================================
--- src/x64/macro-assembler-x64.cc (revision 6778)
+++ src/x64/macro-assembler-x64.cc (working copy)
@@ -1442,11 +1442,15 @@
// r13 is kRootRegister.
push(r14);
// r15 is kSmiConstantRegister
- STATIC_ASSERT(11 == kRegistersPushedByPushad);
+ STATIC_ASSERT(11 == kNumSafepointSavedRegisters);
+ subq(rsp, Immediate(
+ (kNumSafepointRegisters-kNumSafepointSavedRegisters) *
kPointerSize));
}
void MacroAssembler::Popad() {
+ addq(rsp, Immediate(
+ (kNumSafepointRegisters-kNumSafepointSavedRegisters) *
kPointerSize));
pop(r14);
pop(r12);
pop(r11);
@@ -1462,7 +1466,7 @@
void MacroAssembler::Dropad() {
- addq(rsp, Immediate(kRegistersPushedByPushad * kPointerSize));
+ addq(rsp, Immediate(kNumSafepointRegisters * kPointerSize));
}
Index: src/x64/macro-assembler-x64.h
===================================================================
--- src/x64/macro-assembler-x64.h (revision 6778)
+++ src/x64/macro-assembler-x64.h (working copy)
@@ -171,7 +171,7 @@
void PushSafepointRegisters() { Pushad(); }
void PopSafepointRegisters() { Popad(); }
static int SafepointRegisterStackIndex(int reg_code) {
- return kRegistersPushedByPushad - 1 -
+ return kNumSafepointRegisters - 1 -
kSafepointPushRegisterIndices[reg_code];
}
@@ -967,7 +967,7 @@
// Order general registers are pushed by Pushad.
// rax, rcx, rdx, rbx, rsi, rdi, r8, r9, r11, r12, r14.
static int kSafepointPushRegisterIndices[Register::kNumRegisters];
- static const int kRegistersPushedByPushad = 11;
+ static const int kNumSafepointSavedRegisters = 11;
bool generating_stub_;
bool allow_stub_calls_;
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev