| Index: src/x64/lithium-codegen-x64.cc
 | 
| diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
 | 
| index d5cbab4fab4565a9f29dd52ebca50cdc5757842f..d792fb4d409da17e308d40ea7411f44ba712940e 100644
 | 
| --- a/src/x64/lithium-codegen-x64.cc
 | 
| +++ b/src/x64/lithium-codegen-x64.cc
 | 
| @@ -2389,8 +2389,13 @@ void LCodeGen::DoLoadKeyedFastElement(LLoadKeyedFastElement* instr) {
 | 
|  
 | 
|    // Check for the hole value.
 | 
|    if (instr->hydrogen()->RequiresHoleCheck()) {
 | 
| -    __ CompareRoot(result, Heap::kTheHoleValueRootIndex);
 | 
| -    DeoptimizeIf(equal, instr->environment());
 | 
| +    if (IsFastSmiElementsKind(instr->hydrogen()->elements_kind())) {
 | 
| +      Condition smi = __ CheckSmi(result);
 | 
| +      DeoptimizeIf(NegateCondition(smi), instr->environment());
 | 
| +    } else {
 | 
| +      __ CompareRoot(result, Heap::kTheHoleValueRootIndex);
 | 
| +      DeoptimizeIf(equal, instr->environment());
 | 
| +    }
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -3790,6 +3795,10 @@ void LCodeGen::DoSmiUntag(LSmiUntag* instr) {
 | 
|    if (instr->needs_check()) {
 | 
|      Condition is_smi = __ CheckSmi(input);
 | 
|      DeoptimizeIf(NegateCondition(is_smi), instr->environment());
 | 
| +  } else {
 | 
| +    if (FLAG_debug_code) {
 | 
| +      __ AbortIfNotSmi(input);
 | 
| +    }
 | 
|    }
 | 
|    __ SmiToInteger32(input, input);
 | 
|  }
 | 
| 
 |