| Index: src/compiler/types.cc
 | 
| diff --git a/src/compiler/types.cc b/src/compiler/types.cc
 | 
| index 3827cccd9f599ebfe916f01280b62a9fa7455c2f..4ae749d535c5c390c86a020cee14994acac3c04e 100644
 | 
| --- a/src/compiler/types.cc
 | 
| +++ b/src/compiler/types.cc
 | 
| @@ -402,11 +402,9 @@ bool OtherNumberConstantType::IsOtherNumberConstant(Object* value) {
 | 
|  }
 | 
|  
 | 
|  HeapConstantType::HeapConstantType(BitsetType::bitset bitset,
 | 
| -                                   i::Handle<i::Object> object)
 | 
| +                                   i::Handle<i::HeapObject> object)
 | 
|      : TypeBase(kHeapConstant), bitset_(bitset), object_(object) {
 | 
| -  // All number types should be expressed as Ranges, OtherNumberConstants,
 | 
| -  // or bitsets (nan, negative-zero).
 | 
| -  DCHECK(!object->IsSmi() && !object->IsHeapNumber());
 | 
| +  DCHECK(!object->IsHeapNumber());
 | 
|  }
 | 
|  
 | 
|  // -----------------------------------------------------------------------------
 | 
| @@ -416,7 +414,8 @@ bool Type::SimplyEquals(Type* that) {
 | 
|    DisallowHeapAllocation no_allocation;
 | 
|    if (this->IsHeapConstant()) {
 | 
|      return that->IsHeapConstant() &&
 | 
| -           *this->AsHeapConstant()->Value() == *that->AsHeapConstant()->Value();
 | 
| +           this->AsHeapConstant()->Value().address() ==
 | 
| +               that->AsHeapConstant()->Value().address();
 | 
|    }
 | 
|    if (this->IsOtherNumberConstant()) {
 | 
|      return that->IsOtherNumberConstant() &&
 | 
| @@ -782,7 +781,7 @@ Type* Type::NewConstant(i::Handle<i::Object> value, Zone* zone) {
 | 
|    } else if (value->IsHeapNumber()) {
 | 
|      return NewConstant(value->Number(), zone);
 | 
|    }
 | 
| -  return HeapConstant(value, zone);
 | 
| +  return HeapConstant(i::Handle<i::HeapObject>::cast(value), zone);
 | 
|  }
 | 
|  
 | 
|  Type* Type::Union(Type* type1, Type* type2, Zone* zone) {
 | 
| 
 |