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