Chromium Code Reviews| Index: src/arm/lithium-codegen-arm.cc |
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
| index b35dc7c145d884c074bd6582419293f7015fd954..e90ec4f825e416e5e07cce3697858cae06768141 100644 |
| --- a/src/arm/lithium-codegen-arm.cc |
| +++ b/src/arm/lithium-codegen-arm.cc |
| @@ -2310,6 +2310,14 @@ void LCodeGen::DoStoreContextSlot(LStoreContextSlot* instr) { |
| Register context = ToRegister(instr->context()); |
| Register value = ToRegister(instr->value()); |
| MemOperand target = ContextOperand(context, instr->slot_index()); |
| + |
| + Label skip_assignment; |
| + |
| + if (instr->needs_is_hole_check()) { |
|
fschneider
2011/12/08 13:01:30
Maybe rename this to instr->RequiresHoleCheck() to
|
| + __ cmp(value, Operand(factory()->the_hole_value())); |
| + __ b(ne, &skip_assignment); |
| + } |
| + |
| __ str(value, target); |
| if (instr->hydrogen()->NeedsWriteBarrier()) { |
| HType type = instr->hydrogen()->value()->type(); |
| @@ -2324,6 +2332,8 @@ void LCodeGen::DoStoreContextSlot(LStoreContextSlot* instr) { |
| EMIT_REMEMBERED_SET, |
| check_needed); |
| } |
| + |
| + __ bind(&skip_assignment); |
| } |