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

Reply via email to