Revert change 1656 which was unsafe until it can be properly fixed.
authorager@chromium.org <ager@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 1 Apr 2009 10:35:20 +0000 (10:35 +0000)
committerager@chromium.org <ager@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 1 Apr 2009 10:35:20 +0000 (10:35 +0000)
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/60010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/codegen-ia32.cc

index 804e19c8794d4017a72b851ad1a6908805e27318..b6d8c0196a8deacb5ca29dc2c4bb11a590f0dd83 100644 (file)
@@ -4799,25 +4799,17 @@ void CodeGenerator::VisitCountOperation(CountOperation* node) {
                                    target.size() * kPointerSize);
 
     Result value = frame_->Pop();
+    value.ToRegister();
+    ASSERT(value.is_valid());
 
     // Postfix: Store the old value as the result.
     if (is_postfix) {
-      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);
-      }
+      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);