Index: src/arm/full-codegen-arm.cc |
=================================================================== |
--- src/arm/full-codegen-arm.cc (revision 7218) |
+++ src/arm/full-codegen-arm.cc (working copy) |
@@ -1604,26 +1604,27 @@ |
break; |
} |
- // For compound assignments we need another deoptimization point after the |
- // variable/property load. |
if (expr->is_compound()) { |
{ AccumulatorValueContext context(this); |
switch (assign_type) { |
case VARIABLE: |
EmitVariableLoad(expr->target()->AsVariableProxy()->var()); |
- PrepareForBailout(expr->target(), TOS_REG); |
break; |
case NAMED_PROPERTY: |
EmitNamedPropertyLoad(property); |
- PrepareForBailoutForId(expr->CompoundLoadId(), TOS_REG); |
break; |
case KEYED_PROPERTY: |
EmitKeyedPropertyLoad(property); |
- PrepareForBailoutForId(expr->CompoundLoadId(), TOS_REG); |
break; |
} |
} |
+ // For property compound assignments we need another deoptimization |
+ // point after the property load. |
+ if (property != NULL) { |
+ PrepareForBailoutForId(expr->CompoundLoadId(), TOS_REG); |
+ } |
+ |
Token::Value op = expr->binary_op(); |
__ push(r0); // Left operand goes on the stack. |
VisitForAccumulatorValue(expr->value()); |
@@ -3804,11 +3805,7 @@ |
// We need a second deoptimization point after loading the value |
// in case evaluating the property load my have a side effect. |
- if (assign_type == VARIABLE) { |
- PrepareForBailout(expr->expression(), TOS_REG); |
- } else { |
- PrepareForBailout(expr->increment(), TOS_REG); |
- } |
+ PrepareForBailout(expr->increment(), TOS_REG); |
// Call ToNumber only if operand is not a smi. |
Label no_conversion; |