Revision: 6451
Author: [email protected]
Date: Tue Jan 25 00:59:16 2011
Log: Port changes from x64 deoptimizer to ia32 and remove commented out code from last patch.

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

Modified:
 /branches/bleeding_edge/src/ia32/deoptimizer-ia32.cc
 /branches/bleeding_edge/src/x64/deoptimizer-x64.cc

=======================================
--- /branches/bleeding_edge/src/ia32/deoptimizer-ia32.cc Mon Jan 24 23:57:56 2011 +++ /branches/bleeding_edge/src/ia32/deoptimizer-ia32.cc Tue Jan 25 00:59:16 2011
@@ -534,26 +534,25 @@
   __ mov(ebx, Operand(eax, Deoptimizer::input_offset()));

   // Fill in the input registers.
-  for (int i = 0; i < kNumberOfRegisters; i++) {
+  for (int i = kNumberOfRegisters - 1; i >= 0; i--) {
     int offset = (i * kPointerSize) + FrameDescription::registers_offset();
-    __ mov(ecx, Operand(esp, (kNumberOfRegisters - 1 - i) * kPointerSize));
-    __ mov(Operand(ebx, offset), ecx);
+    __ pop(Operand(ebx, offset));
   }

   // Fill in the double input registers.
   int double_regs_offset = FrameDescription::double_registers_offset();
   for (int i = 0; i < XMMRegister::kNumAllocatableRegisters; ++i) {
     int dst_offset = i * kDoubleSize + double_regs_offset;
-    int src_offset = i * kDoubleSize + kNumberOfRegisters * kPointerSize;
+    int src_offset = i * kDoubleSize;
     __ movdbl(xmm0, Operand(esp, src_offset));
     __ movdbl(Operand(ebx, dst_offset), xmm0);
   }

- // Remove the bailout id and the general purpose registers from the stack.
+  // Remove the bailout id and the double registers from the stack.
   if (type() == EAGER) {
- __ add(Operand(esp), Immediate(kSavedRegistersAreaSize + kPointerSize));
+    __ add(Operand(esp), Immediate(kDoubleRegsSize + kPointerSize));
   } else {
- __ add(Operand(esp), Immediate(kSavedRegistersAreaSize + 2 * kPointerSize));
+    __ add(Operand(esp), Immediate(kDoubleRegsSize + 2 * kPointerSize));
   }

   // Compute a pointer to the unwinding limit in register ecx; that is
=======================================
--- /branches/bleeding_edge/src/x64/deoptimizer-x64.cc Mon Jan 24 23:57:56 2011 +++ /branches/bleeding_edge/src/x64/deoptimizer-x64.cc Tue Jan 25 00:59:16 2011
@@ -381,8 +381,6 @@
   for (int i = kNumberOfRegisters -1; i >= 0; i--) {
     int offset = (i * kPointerSize) + FrameDescription::registers_offset();
     __ pop(Operand(rbx, offset));
- // __ movq(rcx, Operand(rsp, (kNumberOfRegisters - 1 - i) * kPointerSize));
-    // __ movq(Operand(rbx, offset), rcx);
   }

     // Fill in the double input registers.
@@ -392,7 +390,7 @@
     __ pop(Operand(rbx, dst_offset));
   }

- // Remove the bailout id and the general purpose registers from the stack.
+  // Remove the bailout id from the stack.
   if (type() == EAGER) {
     __ addq(rsp, Immediate(kPointerSize));
   } else {

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

Reply via email to