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