| Index: src/hydrogen.cc | 
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc | 
| index 1d1f94bd0e82ffa58301ce91b772a9a86d28dc2b..c8b368d6d6979349ff04f734fddb963e368fc37b 100644 | 
| --- a/src/hydrogen.cc | 
| +++ b/src/hydrogen.cc | 
| @@ -4127,8 +4127,7 @@ void HGraphBuilder::VisitForInStatement(ForInStatement* stmt) { | 
| HValue* key = AddInstruction( | 
| new(zone()) HLoadKeyedFastElement( | 
| environment()->ExpressionStackAt(2),  // Enum cache. | 
| -          environment()->ExpressionStackAt(0),  // Iteration index. | 
| -          OMIT_HOLE_CHECK)); | 
| +          environment()->ExpressionStackAt(0)));  // Iteration index. | 
|  | 
| // Check if the expected map still matches that of the enumerable. | 
| // If not just deoptimize. | 
| @@ -5482,7 +5481,8 @@ HInstruction* HGraphBuilder::BuildFastElementAccess(HValue* elements, | 
| if (IsFastDoubleElementsKind(elements_kind)) { | 
| return new(zone()) HLoadKeyedFastDoubleElement(elements, checked_key, mode); | 
| } else {  // Smi or Object elements. | 
| -    return new(zone()) HLoadKeyedFastElement(elements, checked_key, mode); | 
| +    return new(zone()) HLoadKeyedFastElement(elements, checked_key, | 
| +                                             elements_kind); | 
| } | 
| } | 
|  | 
| @@ -5530,7 +5530,8 @@ HInstruction* HGraphBuilder::BuildMonomorphicElementAccess(HValue* object, | 
| fast_elements || | 
| map->has_fast_double_elements()); | 
| if (map->instance_type() == JS_ARRAY_TYPE) { | 
| -    length = AddInstruction(new(zone()) HJSArrayLength(object, mapcheck)); | 
| +    length = AddInstruction(new(zone()) HJSArrayLength(object, mapcheck, | 
| +                                                       HType::Smi())); | 
| } else { | 
| length = AddInstruction(new(zone()) HFixedArrayBaseLength(elements)); | 
| } | 
| @@ -5685,7 +5686,8 @@ HValue* HGraphBuilder::HandlePolymorphicElementAccess(HValue* object, | 
|  | 
| set_current_block(if_jsarray); | 
| HInstruction* length; | 
| -        length = AddInstruction(new(zone()) HJSArrayLength(object, typecheck)); | 
| +        length = AddInstruction(new(zone()) HJSArrayLength(object, typecheck | 
| +                                                           HType::Smi())); | 
| checked_key = AddInstruction(new(zone()) HBoundsCheck(key, length)); | 
| access = AddInstruction(BuildFastElementAccess( | 
| elements, checked_key, val, elements_kind, is_store)); | 
| @@ -5885,7 +5887,6 @@ void HGraphBuilder::VisitProperty(Property* expr) { | 
| HInstruction* mapcheck = | 
| AddInstruction(HCheckInstanceType::NewIsJSArray(array, zone())); | 
| instr = new(zone()) HJSArrayLength(array, mapcheck); | 
| - | 
| } else if (expr->IsStringLength()) { | 
| HValue* string = Pop(); | 
| AddInstruction(new(zone()) HCheckNonSmi(string)); | 
|  |