Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1604)

Unified Diff: src/profile-generator.cc

Issue 9969197: Embed entries_ list into HeapObjectsMap by value. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/profile-generator.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/profile-generator.cc
diff --git a/src/profile-generator.cc b/src/profile-generator.cc
index ec08f8dca806b0f34985ca4dbd859b8e464ce9eb..632b1d62b9414c3475e7fbbc202ea0e3f413201d 100644
--- a/src/profile-generator.cc
+++ b/src/profile-generator.cc
@@ -1311,8 +1311,7 @@ const SnapshotObjectId HeapObjectsMap::kFirstAvailableObjectId =
HeapObjectsMap::HeapObjectsMap()
: next_id_(kFirstAvailableObjectId),
- entries_map_(AddressesMatch),
- entries_(new List<EntryInfo>()) {
+ entries_map_(AddressesMatch) {
// This dummy element solves a problem with entries_map_.
// When we do lookup in HashMap we see no difference between two cases:
// it has an entry with NULL as the value or it has created
@@ -1320,12 +1319,7 @@ HeapObjectsMap::HeapObjectsMap()
// With such dummy element we have a guaranty that all entries_map_ entries
// will have the value field grater than 0.
// This fact is using in MoveObject method.
- entries_->Add(EntryInfo(0, NULL, 0));
-}
-
-
-HeapObjectsMap::~HeapObjectsMap() {
- delete entries_;
+ entries_.Add(EntryInfo(0, NULL, 0));
}
@@ -1342,7 +1336,7 @@ void HeapObjectsMap::MoveObject(Address from, Address to) {
if (from_value == NULL) return;
int from_entry_info_index =
static_cast<int>(reinterpret_cast<intptr_t>(from_value));
- entries_->at(from_entry_info_index).addr = to;
+ entries_.at(from_entry_info_index).addr = to;
HashMap::Entry* to_entry = entries_map_.Lookup(to, AddressHash(to), true);
if (to_entry->value != NULL) {
int to_entry_info_index =
@@ -1351,7 +1345,7 @@ void HeapObjectsMap::MoveObject(Address from, Address to) {
// value in addr field. It is bad because later at RemoveDeadEntries
// one of this entry will be removed with the corresponding entries_map_
// entry.
- entries_->at(to_entry_info_index).addr = NULL;
+ entries_.at(to_entry_info_index).addr = NULL;
}
to_entry->value = reinterpret_cast<void*>(from_entry_info_index);
}
@@ -1361,29 +1355,29 @@ SnapshotObjectId HeapObjectsMap::FindEntry(Address addr) {
HashMap::Entry* entry = entries_map_.Lookup(addr, AddressHash(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);
- ASSERT(static_cast<uint32_t>(entries_->length()) > entries_map_.occupancy());
+ EntryInfo& entry_info = entries_.at(entry_index);
+ ASSERT(static_cast<uint32_t>(entries_.length()) > entries_map_.occupancy());
return entry_info.id;
}
SnapshotObjectId HeapObjectsMap::FindOrAddEntry(Address addr,
unsigned int size) {
- ASSERT(static_cast<uint32_t>(entries_->length()) > entries_map_.occupancy());
+ ASSERT(static_cast<uint32_t>(entries_.length()) > entries_map_.occupancy());
HashMap::Entry* entry = entries_map_.Lookup(addr, AddressHash(addr), true);
if (entry->value != NULL) {
int entry_index =
static_cast<int>(reinterpret_cast<intptr_t>(entry->value));
- EntryInfo& entry_info = entries_->at(entry_index);
+ EntryInfo& entry_info = entries_.at(entry_index);
entry_info.accessed = true;
entry_info.size = size;
return entry_info.id;
}
- entry->value = reinterpret_cast<void*>(entries_->length());
+ entry->value = reinterpret_cast<void*>(entries_.length());
SnapshotObjectId id = next_id_;
next_id_ += kObjectIdStep;
- entries_->Add(EntryInfo(id, addr, size));
- ASSERT(static_cast<uint32_t>(entries_->length()) > entries_map_.occupancy());
+ entries_.Add(EntryInfo(id, addr, size));
+ ASSERT(static_cast<uint32_t>(entries_.length()) > entries_map_.occupancy());
return id;
}
@@ -1410,9 +1404,9 @@ void HeapObjectsMap::PushHeapObjectsStats(OutputStream* stream) {
time_intervals_.Add(TimeInterval(next_id_));
int prefered_chunk_size = stream->GetChunkSize();
List<uint32_t> stats_buffer;
- ASSERT(!entries_->is_empty());
- EntryInfo* entry_info = &entries_->first();
- EntryInfo* end_entry_info = &entries_->last() + 1;
+ ASSERT(!entries_.is_empty());
+ EntryInfo* entry_info = &entries_.first();
+ EntryInfo* end_entry_info = &entries_.last() + 1;
for (int time_interval_index = 0;
time_interval_index < time_intervals_.length();
++time_interval_index) {
@@ -1450,17 +1444,17 @@ void HeapObjectsMap::PushHeapObjectsStats(OutputStream* stream) {
void HeapObjectsMap::RemoveDeadEntries() {
- ASSERT(entries_->length() > 0 &&
- entries_->at(0).id == 0 &&
- entries_->at(0).addr == NULL);
+ ASSERT(entries_.length() > 0 &&
+ entries_.at(0).id == 0 &&
+ entries_.at(0).addr == NULL);
int first_free_entry = 1;
- for (int i = 1; i < entries_->length(); ++i) {
- EntryInfo& entry_info = entries_->at(i);
+ for (int i = 1; i < entries_.length(); ++i) {
+ EntryInfo& entry_info = entries_.at(i);
if (entry_info.accessed) {
if (first_free_entry != i) {
- entries_->at(first_free_entry) = entry_info;
+ entries_.at(first_free_entry) = entry_info;
}
- entries_->at(first_free_entry).accessed = false;
+ entries_.at(first_free_entry).accessed = false;
HashMap::Entry* entry = entries_map_.Lookup(
entry_info.addr, AddressHash(entry_info.addr), false);
ASSERT(entry);
@@ -1472,8 +1466,8 @@ void HeapObjectsMap::RemoveDeadEntries() {
}
}
}
- entries_->Rewind(first_free_entry);
- ASSERT(static_cast<uint32_t>(entries_->length()) - 1 ==
+ entries_.Rewind(first_free_entry);
+ ASSERT(static_cast<uint32_t>(entries_.length()) - 1 ==
entries_map_.occupancy());
}
« no previous file with comments | « src/profile-generator.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698