Revision: 16069
Author: [email protected]
Date: Tue Aug 6 01:49:05 2013
Log: Use standard routine to compute pointer hashs in heap profiler
BUG=None
[email protected], [email protected]
Review URL: https://codereview.chromium.org/22300005
http://code.google.com/p/v8/source/detail?r=16069
Modified:
/branches/bleeding_edge/src/heap-snapshot-generator.cc
/branches/bleeding_edge/src/heap-snapshot-generator.h
=======================================
--- /branches/bleeding_edge/src/heap-snapshot-generator.cc Wed Jul 24
05:34:50 2013
+++ /branches/bleeding_edge/src/heap-snapshot-generator.cc Tue Aug 6
01:49:05 2013
@@ -369,6 +369,12 @@
HeapObjectsMap::kGcRootsFirstSubrootId +
VisitorSynchronization::kNumberOfSyncTags *
HeapObjectsMap::kObjectIdStep;
+
+static bool AddressesMatch(void* key1, void* key2) {
+ return key1 == key2;
+}
+
+
HeapObjectsMap::HeapObjectsMap(Heap* heap)
: next_id_(kFirstAvailableObjectId),
entries_map_(AddressesMatch),
@@ -393,19 +399,20 @@
ASSERT(to != NULL);
ASSERT(from != NULL);
if (from == to) return;
- void* from_value = entries_map_.Remove(from, AddressHash(from));
+ void* from_value = entries_map_.Remove(from, ComputePointerHash(from));
if (from_value == NULL) {
// It may occur that some untracked object moves to an address X and
there
// is a tracked object at that address. In this case we should remove
the
// entry as we know that the object has died.
- void* to_value = entries_map_.Remove(to, AddressHash(to));
+ void* to_value = entries_map_.Remove(to, ComputePointerHash(to));
if (to_value != NULL) {
int to_entry_info_index =
static_cast<int>(reinterpret_cast<intptr_t>(to_value));
entries_.at(to_entry_info_index).addr = NULL;
}
} else {
- HashMap::Entry* to_entry = entries_map_.Lookup(to, AddressHash(to),
true);
+ HashMap::Entry* to_entry = entries_map_.Lookup(to,
ComputePointerHash(to),
+ true);
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
@@ -425,7 +432,8 @@
SnapshotObjectId HeapObjectsMap::FindEntry(Address addr) {
- HashMap::Entry* entry = entries_map_.Lookup(addr, AddressHash(addr),
false);
+ HashMap::Entry* entry = entries_map_.Lookup(addr,
ComputePointerHash(addr),
+ false);
if (entry == NULL) return 0;
int entry_index =
static_cast<int>(reinterpret_cast<intptr_t>(entry->value));
EntryInfo& entry_info = entries_.at(entry_index);
@@ -437,7 +445,8 @@
SnapshotObjectId HeapObjectsMap::FindOrAddEntry(Address addr,
unsigned int size) {
ASSERT(static_cast<uint32_t>(entries_.length()) >
entries_map_.occupancy());
- HashMap::Entry* entry = entries_map_.Lookup(addr, AddressHash(addr),
true);
+ HashMap::Entry* entry = entries_map_.Lookup(addr,
ComputePointerHash(addr),
+ true);
if (entry->value != NULL) {
int entry_index =
static_cast<int>(reinterpret_cast<intptr_t>(entry->value));
@@ -532,13 +541,14 @@
}
entries_.at(first_free_entry).accessed = false;
HashMap::Entry* entry = entries_map_.Lookup(
- entry_info.addr, AddressHash(entry_info.addr), false);
+ entry_info.addr, ComputePointerHash(entry_info.addr), false);
ASSERT(entry);
entry->value = reinterpret_cast<void*>(first_free_entry);
++first_free_entry;
} else {
if (entry_info.addr) {
- entries_map_.Remove(entry_info.addr, AddressHash(entry_info.addr));
+ entries_map_.Remove(entry_info.addr,
+ ComputePointerHash(entry_info.addr));
}
}
}
=======================================
--- /branches/bleeding_edge/src/heap-snapshot-generator.h Tue Jul 9
07:16:59 2013
+++ /branches/bleeding_edge/src/heap-snapshot-generator.h Tue Aug 6
01:49:05 2013
@@ -266,16 +266,6 @@
void UpdateHeapObjectsMap();
void RemoveDeadEntries();
- static bool AddressesMatch(void* key1, void* key2) {
- return key1 == key2;
- }
-
- static uint32_t AddressHash(Address addr) {
- return ComputeIntegerHash(
- static_cast<uint32_t>(reinterpret_cast<uintptr_t>(addr)),
- v8::internal::kZeroHashSeed);
- }
-
SnapshotObjectId next_id_;
HashMap entries_map_;
List<EntryInfo> entries_;
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.