| 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..a01e41e067951737a1586aab930da7fcbdc4b1a7 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->RequiresHoleCheck()) {
|
| + __ 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);
|
| }
|
|
|
|
|
|
|