Revision: 4611
Author: [email protected]
Date: Fri May 7 04:24:04 2010
Log: Fix virtual frame height on ARM
Bug introduced in r4608 where Dup2 increses the frame height with 4 instead
of 2 when in a spilled scope.
Also removed a bogus ASSERT and used Push from macro assemler for double
pushes.
[email protected]
Review URL: http://codereview.chromium.org/2005005
http://code.google.com/p/v8/source/detail?r=4611
Modified:
/branches/bleeding_edge/src/arm/ic-arm.cc
/branches/bleeding_edge/src/arm/virtual-frame-arm.cc
=======================================
--- /branches/bleeding_edge/src/arm/ic-arm.cc Fri May 7 03:16:11 2010
+++ /branches/bleeding_edge/src/arm/ic-arm.cc Fri May 7 04:24:04 2010
@@ -841,7 +841,6 @@
// string and a number), and call runtime.
__ bind(&slow_char_code);
__ EnterInternalFrame();
- ASSERT(object.code() > index.code());
__ Push(object, index);
__ CallRuntime(Runtime::kStringCharCodeAt, 2);
ASSERT(!code.is(r0));
=======================================
--- /branches/bleeding_edge/src/arm/virtual-frame-arm.cc Fri May 7
03:16:11 2010
+++ /branches/bleeding_edge/src/arm/virtual-frame-arm.cc Fri May 7
04:24:04 2010
@@ -536,9 +536,9 @@
void VirtualFrame::Dup2() {
if (SpilledScope::is_spilled()) {
__ ldr(ip, MemOperand(sp, kPointerSize));
- EmitPush(ip);
+ __ push(ip);
__ ldr(ip, MemOperand(sp, kPointerSize));
- EmitPush(ip);
+ __ push(ip);
} else {
switch (top_of_stack_state_) {
case NO_TOS_REGISTERS:
@@ -557,13 +557,11 @@
top_of_stack_state_ = R1_R0_TOS;
break;
case R0_R1_TOS:
- __ push(r1);
- __ push(r0);
+ __ Push(r1, r0);
top_of_stack_state_ = R0_R1_TOS;
break;
case R1_R0_TOS:
- __ push(r0);
- __ push(r1);
+ __ Push(r0, r1);
top_of_stack_state_ = R1_R0_TOS;
break;
default:
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev