| Index: src/codegen-ia32.cc
|
| ===================================================================
|
| --- src/codegen-ia32.cc (revision 1707)
|
| +++ src/codegen-ia32.cc (working copy)
|
| @@ -3927,6 +3927,9 @@
|
|
|
| } else {
|
| Literal* literal = node->value()->AsLiteral();
|
| + bool overwrite_value =
|
| + (node->value()->AsBinaryOperation() != NULL &&
|
| + node->value()->AsBinaryOperation()->ResultOverwriteAllowed());
|
| Variable* right_var = node->value()->AsVariableProxy()->AsVariable();
|
| // There are two cases where the target is not read in the right hand
|
| // side, that are easy to test for: the right hand side is a literal,
|
| @@ -3939,7 +3942,9 @@
|
| target.GetValue(NOT_INSIDE_TYPEOF);
|
| }
|
| Load(node->value());
|
| - GenericBinaryOperation(node->binary_op(), node->type());
|
| + GenericBinaryOperation(node->binary_op(),
|
| + node->type(),
|
| + overwrite_value ? OVERWRITE_RIGHT : NO_OVERWRITE);
|
| }
|
|
|
| if (var != NULL &&
|
|
|