Reviewers: Erik Corry,

Description:
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]

Please review this at http://codereview.chromium.org/2005005/show

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
  M     src/arm/ic-arm.cc
  M     src/arm/virtual-frame-arm.cc


Index: src/arm/virtual-frame-arm.cc
===================================================================
--- src/arm/virtual-frame-arm.cc        (revision 4608)
+++ src/arm/virtual-frame-arm.cc        (working copy)
@@ -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:
Index: src/arm/ic-arm.cc
===================================================================
--- src/arm/ic-arm.cc   (revision 4608)
+++ src/arm/ic-arm.cc   (working copy)
@@ -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));


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

Reply via email to