Index: src/heap-snapshot-generator.cc |
diff --git a/src/heap-snapshot-generator.cc b/src/heap-snapshot-generator.cc |
index 25b1526d98ced35b77bd082d7f4ec414ab8e77c2..7844d32677fa461c8fc2542c494333702dcc989d 100644 |
--- a/src/heap-snapshot-generator.cc |
+++ b/src/heap-snapshot-generator.cc |
@@ -2693,37 +2693,20 @@ void HeapSnapshotJSONSerializer::SerializeString(const unsigned char* s) { |
void HeapSnapshotJSONSerializer::SerializeStrings() { |
- List<HashMap::Entry*> sorted_strings; |
- SortHashMap(&strings_, &sorted_strings); |
+ ScopedVector<const unsigned char*> sorted_strings( |
+ strings_.occupancy() + 1); |
+ for (HashMap::Entry* entry = strings_.Start(); |
+ entry != NULL; entry = strings_.Next(entry)) { |
+ sorted_strings[reinterpret_cast<uintptr_t>(entry->value)] = |
+ reinterpret_cast<const unsigned char*>(entry->key); |
+ } |
writer_->AddString("\"<dummy>\""); |
- for (int i = 0; i < sorted_strings.length(); ++i) { |
+ for (int i = 1; i < sorted_strings.length(); ++i) { |
writer_->AddCharacter(','); |
- SerializeString( |
- reinterpret_cast<const unsigned char*>(sorted_strings[i]->key)); |
+ SerializeString(sorted_strings[i]); |
if (writer_->aborted()) return; |
} |
} |
-template<typename T> |
-inline static int SortUsingEntryValue(const T* x, const T* y) { |
- uintptr_t x_uint = reinterpret_cast<uintptr_t>((*x)->value); |
- uintptr_t y_uint = reinterpret_cast<uintptr_t>((*y)->value); |
- if (x_uint > y_uint) { |
- return 1; |
- } else if (x_uint == y_uint) { |
- return 0; |
- } else { |
- return -1; |
- } |
-} |
- |
- |
-void HeapSnapshotJSONSerializer::SortHashMap( |
- HashMap* map, List<HashMap::Entry*>* sorted_entries) { |
- for (HashMap::Entry* p = map->Start(); p != NULL; p = map->Next(p)) |
- sorted_entries->Add(p); |
- sorted_entries->Sort(SortUsingEntryValue); |
-} |
- |
} } // namespace v8::internal |