| Index: src/heap-snapshot-generator.cc
 | 
| diff --git a/src/heap-snapshot-generator.cc b/src/heap-snapshot-generator.cc
 | 
| index 825e83558460c46391a32508fcb6989170cc06df..92149a2e8686c7c0e2839e2371349ed4afe88ce5 100644
 | 
| --- a/src/heap-snapshot-generator.cc
 | 
| +++ b/src/heap-snapshot-generator.cc
 | 
| @@ -391,8 +391,8 @@ bool HeapObjectsMap::MoveObject(Address from, Address to, int object_size) {
 | 
|        entries_.at(to_entry_info_index).addr = NULL;
 | 
|      }
 | 
|    } else {
 | 
| -    HashMap::Entry* to_entry = entries_map_.Lookup(to, ComputePointerHash(to),
 | 
| -                                                   true);
 | 
| +    HashMap::Entry* to_entry =
 | 
| +        entries_map_.LookupOrInsert(to, ComputePointerHash(to));
 | 
|      if (to_entry->value != NULL) {
 | 
|        // We found the existing entry with to address for an old object.
 | 
|        // Without this operation we will have two EntryInfo's with the same
 | 
| @@ -429,8 +429,7 @@ void HeapObjectsMap::UpdateObjectSize(Address addr, int size) {
 | 
|  
 | 
|  
 | 
|  SnapshotObjectId HeapObjectsMap::FindEntry(Address addr) {
 | 
| -  HashMap::Entry* entry = entries_map_.Lookup(addr, ComputePointerHash(addr),
 | 
| -                                              false);
 | 
| +  HashMap::Entry* entry = entries_map_.Lookup(addr, ComputePointerHash(addr));
 | 
|    if (entry == NULL) return 0;
 | 
|    int entry_index = static_cast<int>(reinterpret_cast<intptr_t>(entry->value));
 | 
|    EntryInfo& entry_info = entries_.at(entry_index);
 | 
| @@ -443,8 +442,8 @@ SnapshotObjectId HeapObjectsMap::FindOrAddEntry(Address addr,
 | 
|                                                  unsigned int size,
 | 
|                                                  bool accessed) {
 | 
|    DCHECK(static_cast<uint32_t>(entries_.length()) > entries_map_.occupancy());
 | 
| -  HashMap::Entry* entry = entries_map_.Lookup(addr, ComputePointerHash(addr),
 | 
| -                                              true);
 | 
| +  HashMap::Entry* entry =
 | 
| +      entries_map_.LookupOrInsert(addr, ComputePointerHash(addr));
 | 
|    if (entry->value != NULL) {
 | 
|      int entry_index =
 | 
|          static_cast<int>(reinterpret_cast<intptr_t>(entry->value));
 | 
| @@ -554,8 +553,8 @@ int HeapObjectsMap::FindUntrackedObjects() {
 | 
|    for (HeapObject* obj = iterator.next();
 | 
|         obj != NULL;
 | 
|         obj = iterator.next()) {
 | 
| -    HashMap::Entry* entry = entries_map_.Lookup(
 | 
| -      obj->address(), ComputePointerHash(obj->address()), false);
 | 
| +    HashMap::Entry* entry =
 | 
| +        entries_map_.Lookup(obj->address(), ComputePointerHash(obj->address()));
 | 
|      if (entry == NULL) {
 | 
|        ++untracked;
 | 
|        if (FLAG_heap_profiler_trace_objects) {
 | 
| @@ -675,7 +674,7 @@ void HeapObjectsMap::RemoveDeadEntries() {
 | 
|        }
 | 
|        entries_.at(first_free_entry).accessed = false;
 | 
|        HashMap::Entry* entry = entries_map_.Lookup(
 | 
| -          entry_info.addr, ComputePointerHash(entry_info.addr), false);
 | 
| +          entry_info.addr, ComputePointerHash(entry_info.addr));
 | 
|        DCHECK(entry);
 | 
|        entry->value = reinterpret_cast<void*>(first_free_entry);
 | 
|        ++first_free_entry;
 | 
| @@ -721,14 +720,14 @@ HeapEntriesMap::HeapEntriesMap()
 | 
|  
 | 
|  
 | 
|  int HeapEntriesMap::Map(HeapThing thing) {
 | 
| -  HashMap::Entry* cache_entry = entries_.Lookup(thing, Hash(thing), false);
 | 
| +  HashMap::Entry* cache_entry = entries_.Lookup(thing, Hash(thing));
 | 
|    if (cache_entry == NULL) return HeapEntry::kNoEntry;
 | 
|    return static_cast<int>(reinterpret_cast<intptr_t>(cache_entry->value));
 | 
|  }
 | 
|  
 | 
|  
 | 
|  void HeapEntriesMap::Pair(HeapThing thing, int entry) {
 | 
| -  HashMap::Entry* cache_entry = entries_.Lookup(thing, Hash(thing), true);
 | 
| +  HashMap::Entry* cache_entry = entries_.LookupOrInsert(thing, Hash(thing));
 | 
|    DCHECK(cache_entry->value == NULL);
 | 
|    cache_entry->value = reinterpret_cast<void*>(static_cast<intptr_t>(entry));
 | 
|  }
 | 
| @@ -747,21 +746,21 @@ void HeapObjectsSet::Clear() {
 | 
|  bool HeapObjectsSet::Contains(Object* obj) {
 | 
|    if (!obj->IsHeapObject()) return false;
 | 
|    HeapObject* object = HeapObject::cast(obj);
 | 
| -  return entries_.Lookup(object, HeapEntriesMap::Hash(object), false) != NULL;
 | 
| +  return entries_.Lookup(object, HeapEntriesMap::Hash(object)) != NULL;
 | 
|  }
 | 
|  
 | 
|  
 | 
|  void HeapObjectsSet::Insert(Object* obj) {
 | 
|    if (!obj->IsHeapObject()) return;
 | 
|    HeapObject* object = HeapObject::cast(obj);
 | 
| -  entries_.Lookup(object, HeapEntriesMap::Hash(object), true);
 | 
| +  entries_.LookupOrInsert(object, HeapEntriesMap::Hash(object));
 | 
|  }
 | 
|  
 | 
|  
 | 
|  const char* HeapObjectsSet::GetTag(Object* obj) {
 | 
|    HeapObject* object = HeapObject::cast(obj);
 | 
|    HashMap::Entry* cache_entry =
 | 
| -      entries_.Lookup(object, HeapEntriesMap::Hash(object), false);
 | 
| +      entries_.Lookup(object, HeapEntriesMap::Hash(object));
 | 
|    return cache_entry != NULL
 | 
|        ? reinterpret_cast<const char*>(cache_entry->value)
 | 
|        : NULL;
 | 
| @@ -772,7 +771,7 @@ void HeapObjectsSet::SetTag(Object* obj, const char* tag) {
 | 
|    if (!obj->IsHeapObject()) return;
 | 
|    HeapObject* object = HeapObject::cast(obj);
 | 
|    HashMap::Entry* cache_entry =
 | 
| -      entries_.Lookup(object, HeapEntriesMap::Hash(object), true);
 | 
| +      entries_.LookupOrInsert(object, HeapEntriesMap::Hash(object));
 | 
|    cache_entry->value = const_cast<char*>(tag);
 | 
|  }
 | 
|  
 | 
| @@ -2390,8 +2389,7 @@ void NativeObjectsExplorer::FillImplicitReferences() {
 | 
|  
 | 
|  List<HeapObject*>* NativeObjectsExplorer::GetListMaybeDisposeInfo(
 | 
|      v8::RetainedObjectInfo* info) {
 | 
| -  HashMap::Entry* entry =
 | 
| -      objects_by_info_.Lookup(info, InfoHash(info), true);
 | 
| +  HashMap::Entry* entry = objects_by_info_.LookupOrInsert(info, InfoHash(info));
 | 
|    if (entry->value != NULL) {
 | 
|      info->Dispose();
 | 
|    } else {
 | 
| @@ -2460,8 +2458,8 @@ NativeGroupRetainedObjectInfo* NativeObjectsExplorer::FindOrAddGroupInfo(
 | 
|        label_copy,
 | 
|        static_cast<int>(strlen(label_copy)),
 | 
|        isolate_->heap()->HashSeed());
 | 
| -  HashMap::Entry* entry = native_groups_.Lookup(const_cast<char*>(label_copy),
 | 
| -                                                hash, true);
 | 
| +  HashMap::Entry* entry =
 | 
| +      native_groups_.LookupOrInsert(const_cast<char*>(label_copy), hash);
 | 
|    if (entry->value == NULL) {
 | 
|      entry->value = new NativeGroupRetainedObjectInfo(label);
 | 
|    }
 | 
| @@ -2772,8 +2770,8 @@ void HeapSnapshotJSONSerializer::SerializeImpl() {
 | 
|  
 | 
|  
 | 
|  int HeapSnapshotJSONSerializer::GetStringId(const char* s) {
 | 
| -  HashMap::Entry* cache_entry = strings_.Lookup(
 | 
| -      const_cast<char*>(s), StringHash(s), true);
 | 
| +  HashMap::Entry* cache_entry =
 | 
| +      strings_.LookupOrInsert(const_cast<char*>(s), StringHash(s));
 | 
|    if (cache_entry->value == NULL) {
 | 
|      cache_entry->value = reinterpret_cast<void*>(next_string_id_++);
 | 
|    }
 | 
| 
 |