Author: [email protected]
Date: Tue Mar 31 08:03:02 2009
New Revision: 1656

Modified:
    branches/bleeding_edge/src/codegen-ia32.cc

Log:
Keep the result of postfix increment and decrement in a register.
Review URL: http://codereview.chromium.org/56106

Modified: branches/bleeding_edge/src/codegen-ia32.cc
==============================================================================
--- branches/bleeding_edge/src/codegen-ia32.cc  (original)
+++ branches/bleeding_edge/src/codegen-ia32.cc  Tue Mar 31 08:03:02 2009
@@ -4799,17 +4799,25 @@
                                     target.size() * kPointerSize);

      Result value = frame_->Pop();
-    value.ToRegister();
-    ASSERT(value.is_valid());

      // Postfix: Store the old value as the result.
      if (is_postfix) {
-      Result old_value = value;
-      frame_->SetElementAt(target.size(), &old_value);
+      if (value.is_register()) {
+        Result old_value = allocator_->Allocate();
+        ASSERT(old_value.is_valid());
+        __ mov(old_value.reg(), value.reg());
+        frame_->SetElementAt(target.size(), &old_value);
+      } else {
+        ASSERT(value.is_constant());
+        Result old_value = value;
+        frame_->SetElementAt(target.size(), &old_value);
+      }
      }

      // Perform optimistic increment/decrement.  Ensure the value is
      // writable.
+    value.ToRegister();
+    ASSERT(value.is_valid());
      frame_->Spill(value.reg());
      ASSERT(allocator_->count(value.reg()) == 1);


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

Reply via email to