| Index: src/crankshaft/hydrogen-types.cc | 
| diff --git a/src/crankshaft/hydrogen-types.cc b/src/crankshaft/hydrogen-types.cc | 
| index 8c8562581a1d1cc5d38241764e86e9ff1a25b4bc..58e4f0b1b588e2f21b9745ef3b1c969d3b36bf2a 100644 | 
| --- a/src/crankshaft/hydrogen-types.cc | 
| +++ b/src/crankshaft/hydrogen-types.cc | 
| @@ -22,7 +22,7 @@ HType HType::FromType(Type* type) { | 
| if (type->Is(Type::Boolean())) return HType::Boolean(); | 
| if (type->Is(Type::Undefined())) return HType::Undefined(); | 
| if (type->Is(Type::Object())) return HType::JSObject(); | 
| -  if (type->Is(Type::Receiver())) return HType::JSReceiver(); | 
| +  if (type->Is(Type::DetectableReceiver())) return HType::JSReceiver(); | 
| return HType::Tagged(); | 
| } | 
|  | 
| @@ -43,8 +43,13 @@ HType HType::FromValue(Handle<Object> value) { | 
| if (value->IsString()) return HType::String(); | 
| if (value->IsBoolean()) return HType::Boolean(); | 
| if (value->IsUndefined()) return HType::Undefined(); | 
| -  if (value->IsJSArray()) return HType::JSArray(); | 
| -  if (value->IsJSObject()) return HType::JSObject(); | 
| +  if (value->IsJSArray()) { | 
| +    DCHECK(!value->IsUndetectableObject()); | 
| +    return HType::JSArray(); | 
| +  } | 
| +  if (value->IsJSObject() && !value->IsUndetectableObject()) { | 
| +    return HType::JSObject(); | 
| +  } | 
| DCHECK(value->IsHeapObject()); | 
| return HType::HeapObject(); | 
| } | 
|  |