Revision: 6776
Author: [email protected]
Date: Mon Feb 14 08:02:02 2011
Log: X64 Crankshaft: Fix error in pushed register indices for safepoints. Fixes issue 1153.
BUG=1153
TEST=mjsunit/date-parse

Review URL: http://codereview.chromium.org/6518007
http://code.google.com/p/v8/source/detail?r=6776

Modified:
 /branches/bleeding_edge/src/x64/macro-assembler-x64.cc
 /branches/bleeding_edge/src/x64/macro-assembler-x64.h
 /branches/bleeding_edge/test/mjsunit/mjsunit.status

=======================================
--- /branches/bleeding_edge/src/x64/macro-assembler-x64.cc Mon Feb 14 05:13:41 2011 +++ /branches/bleeding_edge/src/x64/macro-assembler-x64.cc Mon Feb 14 08:02:02 2011
@@ -1442,6 +1442,7 @@
   // r13 is kRootRegister.
   push(r14);
   // r15 is kSmiConstantRegister
+  STATIC_ASSERT(11 == kRegistersPushedByPushad);
 }


@@ -1461,7 +1462,6 @@


 void MacroAssembler::Dropad() {
-  const int kRegistersPushedByPushad = 11;
   addq(rsp, Immediate(kRegistersPushedByPushad * kPointerSize));
 }

=======================================
--- /branches/bleeding_edge/src/x64/macro-assembler-x64.h Mon Feb 14 05:13:41 2011 +++ /branches/bleeding_edge/src/x64/macro-assembler-x64.h Mon Feb 14 08:02:02 2011
@@ -171,7 +171,8 @@
   void PushSafepointRegisters() { Pushad(); }
   void PopSafepointRegisters() { Popad(); }
   static int SafepointRegisterStackIndex(int reg_code) {
-    return kSafepointPushRegisterIndices[reg_code];
+    return kRegistersPushedByPushad - 1 -
+        kSafepointPushRegisterIndices[reg_code];
   }


@@ -966,6 +967,8 @@
   // 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;
+
   bool generating_stub_;
   bool allow_stub_calls_;

=======================================
--- /branches/bleeding_edge/test/mjsunit/mjsunit.status Mon Feb 14 05:57:15 2011 +++ /branches/bleeding_edge/test/mjsunit/mjsunit.status Mon Feb 14 08:02:02 2011
@@ -125,9 +125,6 @@
 # BUG (1094)
 regress/regress-deopt-gc: SKIP

-# BUG (1153)
-date-parse: SKIP
-
##############################################################################
 [ $arch == mips ]

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

Reply via email to