Reviewers: fschneider, Description: Correctly maintain virtual frame in unary operations on ia32.
Please review this at http://codereview.chromium.org/6591070/ SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/ia32/codegen-ia32.cc Index: src/ia32/codegen-ia32.cc =================================================================== --- src/ia32/codegen-ia32.cc (revision 6964) +++ src/ia32/codegen-ia32.cc (working copy) @@ -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
