| 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();
|
| }
|
|
|