| Index: src/arm/lithium-codegen-arm.cc | 
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc | 
| index 8fad814fad337863420e50b3a3c4116167e12bd1..1ccad1774f11ec83884ea33dfecd79ebc6a01309 100644 | 
| --- a/src/arm/lithium-codegen-arm.cc | 
| +++ b/src/arm/lithium-codegen-arm.cc | 
| @@ -2195,8 +2195,26 @@ void LCodeGen::DoLoadGlobal(LLoadGlobal* instr) { | 
|  | 
| void LCodeGen::DoStoreGlobal(LStoreGlobal* instr) { | 
| Register value = ToRegister(instr->InputAt(0)); | 
| -  __ mov(ip, Operand(Handle<Object>(instr->hydrogen()->cell()))); | 
| -  __ str(value, FieldMemOperand(ip, JSGlobalPropertyCell::kValueOffset)); | 
| +  Register scratch = scratch0(); | 
| + | 
| +  // Load the cell. | 
| +  __ mov(scratch, Operand(Handle<Object>(instr->hydrogen()->cell()))); | 
| + | 
| +  // If the cell we are storing to contains the hole it could have | 
| +  // been deleted from the property dictionary. In that case, we need | 
| +  // to update the property details in the property dictionary to mark | 
| +  // it as no longer deleted. | 
| +  if (instr->hydrogen()->check_hole_value()) { | 
| +    Register scratch2 = ToRegister(instr->TempAt(0)); | 
| +    __ ldr(scratch2, | 
| +           FieldMemOperand(scratch, JSGlobalPropertyCell::kValueOffset)); | 
| +    __ LoadRoot(ip, Heap::kTheHoleValueRootIndex); | 
| +    __ cmp(scratch2, ip); | 
| +    DeoptimizeIf(eq, instr->environment()); | 
| +  } | 
| + | 
| +  // Store the value. | 
| +  __ str(value, FieldMemOperand(scratch, JSGlobalPropertyCell::kValueOffset)); | 
| } | 
|  | 
|  | 
|  |