| Index: src/ia32/codegen-ia32.cc
|
| ===================================================================
|
| --- src/ia32/codegen-ia32.cc (revision 4174)
|
| +++ src/ia32/codegen-ia32.cc (working copy)
|
| @@ -6884,8 +6884,8 @@
|
| ASSERT(old_value.is_valid());
|
| __ mov(old_value.reg(), new_value.reg());
|
|
|
| - // The old value that is return for postfix operations has the
|
| - // same type as the input value we got from the frame.
|
| + // The return value for postfix operations is the
|
| + // same as the input, and has the same number info.
|
| old_value.set_number_info(new_value.number_info());
|
| }
|
|
|
| @@ -6952,8 +6952,13 @@
|
| }
|
| deferred->BindExit();
|
|
|
| - // The result of ++ or -- is always a number.
|
| - new_value.set_number_info(NumberInfo::Number());
|
| + // The result of ++ or -- is an Integer32 if the
|
| + // input is a smi. Otherwise it is a number.
|
| + if (new_value.is_smi()) {
|
| + new_value.set_number_info(NumberInfo::Integer32());
|
| + } else {
|
| + new_value.set_number_info(NumberInfo::Number());
|
| + }
|
|
|
| // Postfix: store the old value in the allocated slot under the
|
| // reference.
|
|
|