Revision: 7000
Author: [email protected]
Date: Tue Mar  1 07:41:23 2011
Log: Correctly maintain virtual frame in unary operations on ia32.
Review URL: http://codereview.chromium.org/6591070
http://code.google.com/p/v8/source/detail?r=7000

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

=======================================
--- /branches/bleeding_edge/src/ia32/codegen-ia32.cc Mon Feb 28 22:10:41 2011 +++ /branches/bleeding_edge/src/ia32/codegen-ia32.cc Tue Mar 1 07:41:23 2011
@@ -8310,6 +8310,7 @@
       switch (op) {
         case Token::SUB: {
           __ neg(value.reg());
+          frame_->Push(&value);
           if (node->no_negative_zero()) {
             // -MIN_INT is MIN_INT with the overflow flag set.
             unsafe_bailout_->Branch(overflow);
@@ -8322,17 +8323,18 @@
         }
         case Token::BIT_NOT: {
           __ not_(value.reg());
+          frame_->Push(&value);
           break;
         }
         case Token::ADD: {
           // Unary plus has no effect on int32 values.
+          frame_->Push(&value);
           break;
         }
         default:
           UNREACHABLE();
           break;
       }
-      frame_->Push(&value);
     } else {
       Load(node->expression());
       bool can_overwrite = node->expression()->ResultOverwriteAllowed();

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

Reply via email to