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 && |