Index: src/heap-snapshot-generator.cc |
diff --git a/src/heap-snapshot-generator.cc b/src/heap-snapshot-generator.cc |
index 13e5924745e95a9e406bb93dfaeb36641e9c95ff..eff9f9a9340c57b7f73772d3149cbe0ee8c027c0 100644 |
--- a/src/heap-snapshot-generator.cc |
+++ b/src/heap-snapshot-generator.cc |
@@ -22,7 +22,7 @@ HeapGraphEdge::HeapGraphEdge(Type type, const char* name, int from, int to) |
from_index_(from), |
to_index_(to), |
name_(name) { |
- ASSERT(type == kContextVariable |
+ DCHECK(type == kContextVariable |
|| type == kProperty |
|| type == kInternal |
|| type == kShortcut |
@@ -35,7 +35,7 @@ HeapGraphEdge::HeapGraphEdge(Type type, int index, int from, int to) |
from_index_(from), |
to_index_(to), |
index_(index) { |
- ASSERT(type == kElement || type == kHidden); |
+ DCHECK(type == kElement || type == kHidden); |
} |
@@ -218,21 +218,21 @@ void HeapSnapshot::RememberLastJSObjectId() { |
HeapEntry* HeapSnapshot::AddRootEntry() { |
- ASSERT(root_index_ == HeapEntry::kNoEntry); |
- ASSERT(entries_.is_empty()); // Root entry must be the first one. |
+ DCHECK(root_index_ == HeapEntry::kNoEntry); |
+ DCHECK(entries_.is_empty()); // Root entry must be the first one. |
HeapEntry* entry = AddEntry(HeapEntry::kSynthetic, |
"", |
HeapObjectsMap::kInternalRootObjectId, |
0, |
0); |
root_index_ = entry->index(); |
- ASSERT(root_index_ == 0); |
+ DCHECK(root_index_ == 0); |
return entry; |
} |
HeapEntry* HeapSnapshot::AddGcRootsEntry() { |
- ASSERT(gc_roots_index_ == HeapEntry::kNoEntry); |
+ DCHECK(gc_roots_index_ == HeapEntry::kNoEntry); |
HeapEntry* entry = AddEntry(HeapEntry::kSynthetic, |
"(GC roots)", |
HeapObjectsMap::kGcRootsObjectId, |
@@ -244,8 +244,8 @@ HeapEntry* HeapSnapshot::AddGcRootsEntry() { |
HeapEntry* HeapSnapshot::AddGcSubrootEntry(int tag) { |
- ASSERT(gc_subroot_indexes_[tag] == HeapEntry::kNoEntry); |
- ASSERT(0 <= tag && tag < VisitorSynchronization::kNumberOfSyncTags); |
+ DCHECK(gc_subroot_indexes_[tag] == HeapEntry::kNoEntry); |
+ DCHECK(0 <= tag && tag < VisitorSynchronization::kNumberOfSyncTags); |
HeapEntry* entry = AddEntry( |
HeapEntry::kSynthetic, |
VisitorSynchronization::kTagNames[tag], |
@@ -269,14 +269,14 @@ HeapEntry* HeapSnapshot::AddEntry(HeapEntry::Type type, |
void HeapSnapshot::FillChildren() { |
- ASSERT(children().is_empty()); |
+ DCHECK(children().is_empty()); |
children().Allocate(edges().length()); |
int children_index = 0; |
for (int i = 0; i < entries().length(); ++i) { |
HeapEntry* entry = &entries()[i]; |
children_index = entry->set_children_index(children_index); |
} |
- ASSERT(edges().length() == children_index); |
+ DCHECK(edges().length() == children_index); |
for (int i = 0; i < edges().length(); ++i) { |
HeapGraphEdge* edge = &edges()[i]; |
edge->ReplaceToIndexWithEntry(this); |
@@ -375,8 +375,8 @@ HeapObjectsMap::HeapObjectsMap(Heap* heap) |
bool HeapObjectsMap::MoveObject(Address from, Address to, int object_size) { |
- ASSERT(to != NULL); |
- ASSERT(from != NULL); |
+ DCHECK(to != NULL); |
+ DCHECK(from != NULL); |
if (from == to) return false; |
void* from_value = entries_map_.Remove(from, ComputePointerHash(from)); |
if (from_value == NULL) { |
@@ -433,7 +433,7 @@ SnapshotObjectId HeapObjectsMap::FindEntry(Address 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); |
- ASSERT(static_cast<uint32_t>(entries_.length()) > entries_map_.occupancy()); |
+ DCHECK(static_cast<uint32_t>(entries_.length()) > entries_map_.occupancy()); |
return entry_info.id; |
} |
@@ -441,7 +441,7 @@ SnapshotObjectId HeapObjectsMap::FindEntry(Address addr) { |
SnapshotObjectId HeapObjectsMap::FindOrAddEntry(Address addr, |
unsigned int size, |
bool accessed) { |
- ASSERT(static_cast<uint32_t>(entries_.length()) > entries_map_.occupancy()); |
+ DCHECK(static_cast<uint32_t>(entries_.length()) > entries_map_.occupancy()); |
HashMap::Entry* entry = entries_map_.Lookup(addr, ComputePointerHash(addr), |
true); |
if (entry->value != NULL) { |
@@ -462,7 +462,7 @@ SnapshotObjectId HeapObjectsMap::FindOrAddEntry(Address addr, |
SnapshotObjectId id = next_id_; |
next_id_ += kObjectIdStep; |
entries_.Add(EntryInfo(id, addr, size, accessed)); |
- ASSERT(static_cast<uint32_t>(entries_.length()) > entries_map_.occupancy()); |
+ DCHECK(static_cast<uint32_t>(entries_.length()) > entries_map_.occupancy()); |
return id; |
} |
@@ -615,7 +615,7 @@ SnapshotObjectId HeapObjectsMap::PushHeapObjectsStats(OutputStream* stream) { |
time_intervals_.Add(TimeInterval(next_id_)); |
int prefered_chunk_size = stream->GetChunkSize(); |
List<v8::HeapStatsUpdate> stats_buffer; |
- ASSERT(!entries_.is_empty()); |
+ DCHECK(!entries_.is_empty()); |
EntryInfo* entry_info = &entries_.first(); |
EntryInfo* end_entry_info = &entries_.last() + 1; |
for (int time_interval_index = 0; |
@@ -645,7 +645,7 @@ SnapshotObjectId HeapObjectsMap::PushHeapObjectsStats(OutputStream* stream) { |
} |
} |
} |
- ASSERT(entry_info == end_entry_info); |
+ DCHECK(entry_info == end_entry_info); |
if (!stats_buffer.is_empty()) { |
OutputStream::WriteResult result = stream->WriteHeapStatsChunk( |
&stats_buffer.first(), stats_buffer.length()); |
@@ -657,7 +657,7 @@ SnapshotObjectId HeapObjectsMap::PushHeapObjectsStats(OutputStream* stream) { |
void HeapObjectsMap::RemoveDeadEntries() { |
- ASSERT(entries_.length() > 0 && |
+ DCHECK(entries_.length() > 0 && |
entries_.at(0).id == 0 && |
entries_.at(0).addr == NULL); |
int first_free_entry = 1; |
@@ -670,7 +670,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); |
- ASSERT(entry); |
+ DCHECK(entry); |
entry->value = reinterpret_cast<void*>(first_free_entry); |
++first_free_entry; |
} else { |
@@ -681,7 +681,7 @@ void HeapObjectsMap::RemoveDeadEntries() { |
} |
} |
entries_.Rewind(first_free_entry); |
- ASSERT(static_cast<uint32_t>(entries_.length()) - 1 == |
+ DCHECK(static_cast<uint32_t>(entries_.length()) - 1 == |
entries_map_.occupancy()); |
} |
@@ -723,7 +723,7 @@ int HeapEntriesMap::Map(HeapThing thing) { |
void HeapEntriesMap::Pair(HeapThing thing, int entry) { |
HashMap::Entry* cache_entry = entries_.Lookup(thing, Hash(thing), true); |
- ASSERT(cache_entry->value == NULL); |
+ DCHECK(cache_entry->value == NULL); |
cache_entry->value = reinterpret_cast<void*>(static_cast<intptr_t>(entry)); |
} |
@@ -1059,9 +1059,9 @@ class IndexedReferencesExtractor : public ObjectVisitor { |
static void MarkVisitedField(HeapObject* obj, int offset) { |
if (offset < 0) return; |
Address field = obj->address() + offset; |
- ASSERT(Memory::Object_at(field)->IsHeapObject()); |
+ DCHECK(Memory::Object_at(field)->IsHeapObject()); |
intptr_t p = reinterpret_cast<intptr_t>(Memory::Object_at(field)); |
- ASSERT(!IsMarked(p)); |
+ DCHECK(!IsMarked(p)); |
intptr_t p_tagged = p | kTag; |
Memory::Object_at(field) = reinterpret_cast<Object*>(p_tagged); |
} |
@@ -1072,7 +1072,7 @@ class IndexedReferencesExtractor : public ObjectVisitor { |
if (IsMarked(p)) { |
intptr_t p_untagged = (p & ~kTaggingMask) | kHeapObjectTag; |
*field = reinterpret_cast<Object*>(p_untagged); |
- ASSERT((*field)->IsHeapObject()); |
+ DCHECK((*field)->IsHeapObject()); |
return true; |
} |
return false; |
@@ -1762,7 +1762,7 @@ void V8HeapExplorer::ExtractElementReferences(JSObject* js_obj, int entry) { |
for (int i = 0; i < length; ++i) { |
Object* k = dictionary->KeyAt(i); |
if (dictionary->IsKey(k)) { |
- ASSERT(k->IsNumber()); |
+ DCHECK(k->IsNumber()); |
uint32_t index = static_cast<uint32_t>(k->Number()); |
SetElementReference(js_obj, entry, index, dictionary->ValueAt(i)); |
} |
@@ -1843,7 +1843,7 @@ class RootsReferencesExtractor : public ObjectVisitor { |
void SetCollectingAllReferences() { collecting_all_references_ = true; } |
void FillReferences(V8HeapExplorer* explorer) { |
- ASSERT(strong_references_.length() <= all_references_.length()); |
+ DCHECK(strong_references_.length() <= all_references_.length()); |
Builtins* builtins = heap_->isolate()->builtins(); |
for (int i = 0; i < reference_tags_.length(); ++i) { |
explorer->SetGcRootsReference(reference_tags_[i].tag); |
@@ -1857,7 +1857,7 @@ class RootsReferencesExtractor : public ObjectVisitor { |
all_references_[all_index]); |
if (reference_tags_[tags_index].tag == |
VisitorSynchronization::kBuiltins) { |
- ASSERT(all_references_[all_index]->IsCode()); |
+ DCHECK(all_references_[all_index]->IsCode()); |
explorer->TagBuiltinCodeObject( |
Code::cast(all_references_[all_index]), |
builtins->name(builtin_index++)); |
@@ -1966,7 +1966,7 @@ void V8HeapExplorer::SetContextReference(HeapObject* parent_obj, |
String* reference_name, |
Object* child_obj, |
int field_offset) { |
- ASSERT(parent_entry == GetEntry(parent_obj)->index()); |
+ DCHECK(parent_entry == GetEntry(parent_obj)->index()); |
HeapEntry* child_entry = GetEntry(child_obj); |
if (child_entry != NULL) { |
filler_->SetNamedReference(HeapGraphEdge::kContextVariable, |
@@ -1982,7 +1982,7 @@ void V8HeapExplorer::SetNativeBindReference(HeapObject* parent_obj, |
int parent_entry, |
const char* reference_name, |
Object* child_obj) { |
- ASSERT(parent_entry == GetEntry(parent_obj)->index()); |
+ DCHECK(parent_entry == GetEntry(parent_obj)->index()); |
HeapEntry* child_entry = GetEntry(child_obj); |
if (child_entry != NULL) { |
filler_->SetNamedReference(HeapGraphEdge::kShortcut, |
@@ -1997,7 +1997,7 @@ void V8HeapExplorer::SetElementReference(HeapObject* parent_obj, |
int parent_entry, |
int index, |
Object* child_obj) { |
- ASSERT(parent_entry == GetEntry(parent_obj)->index()); |
+ DCHECK(parent_entry == GetEntry(parent_obj)->index()); |
HeapEntry* child_entry = GetEntry(child_obj); |
if (child_entry != NULL) { |
filler_->SetIndexedReference(HeapGraphEdge::kElement, |
@@ -2013,7 +2013,7 @@ void V8HeapExplorer::SetInternalReference(HeapObject* parent_obj, |
const char* reference_name, |
Object* child_obj, |
int field_offset) { |
- ASSERT(parent_entry == GetEntry(parent_obj)->index()); |
+ DCHECK(parent_entry == GetEntry(parent_obj)->index()); |
HeapEntry* child_entry = GetEntry(child_obj); |
if (child_entry == NULL) return; |
if (IsEssentialObject(child_obj)) { |
@@ -2031,7 +2031,7 @@ void V8HeapExplorer::SetInternalReference(HeapObject* parent_obj, |
int index, |
Object* child_obj, |
int field_offset) { |
- ASSERT(parent_entry == GetEntry(parent_obj)->index()); |
+ DCHECK(parent_entry == GetEntry(parent_obj)->index()); |
HeapEntry* child_entry = GetEntry(child_obj); |
if (child_entry == NULL) return; |
if (IsEssentialObject(child_obj)) { |
@@ -2048,7 +2048,7 @@ void V8HeapExplorer::SetHiddenReference(HeapObject* parent_obj, |
int parent_entry, |
int index, |
Object* child_obj) { |
- ASSERT(parent_entry == GetEntry(parent_obj)->index()); |
+ DCHECK(parent_entry == GetEntry(parent_obj)->index()); |
HeapEntry* child_entry = GetEntry(child_obj); |
if (child_entry != NULL && IsEssentialObject(child_obj)) { |
filler_->SetIndexedReference(HeapGraphEdge::kHidden, |
@@ -2064,7 +2064,7 @@ void V8HeapExplorer::SetWeakReference(HeapObject* parent_obj, |
const char* reference_name, |
Object* child_obj, |
int field_offset) { |
- ASSERT(parent_entry == GetEntry(parent_obj)->index()); |
+ DCHECK(parent_entry == GetEntry(parent_obj)->index()); |
HeapEntry* child_entry = GetEntry(child_obj); |
if (child_entry == NULL) return; |
if (IsEssentialObject(child_obj)) { |
@@ -2082,7 +2082,7 @@ void V8HeapExplorer::SetWeakReference(HeapObject* parent_obj, |
int index, |
Object* child_obj, |
int field_offset) { |
- ASSERT(parent_entry == GetEntry(parent_obj)->index()); |
+ DCHECK(parent_entry == GetEntry(parent_obj)->index()); |
HeapEntry* child_entry = GetEntry(child_obj); |
if (child_entry == NULL) return; |
if (IsEssentialObject(child_obj)) { |
@@ -2101,7 +2101,7 @@ void V8HeapExplorer::SetPropertyReference(HeapObject* parent_obj, |
Object* child_obj, |
const char* name_format_string, |
int field_offset) { |
- ASSERT(parent_entry == GetEntry(parent_obj)->index()); |
+ DCHECK(parent_entry == GetEntry(parent_obj)->index()); |
HeapEntry* child_entry = GetEntry(child_obj); |
if (child_entry != NULL) { |
HeapGraphEdge::Type type = |
@@ -2133,7 +2133,7 @@ void V8HeapExplorer::SetRootGcRootsReference() { |
void V8HeapExplorer::SetUserGlobalReference(Object* child_obj) { |
HeapEntry* child_entry = GetEntry(child_obj); |
- ASSERT(child_entry != NULL); |
+ DCHECK(child_entry != NULL); |
filler_->SetNamedAutoIndexReference( |
HeapGraphEdge::kShortcut, |
snapshot_->root()->index(), |
@@ -2414,7 +2414,7 @@ void NativeObjectsExplorer::FillImplicitReferences() { |
HeapObject* parent = *group->parent; |
int parent_entry = |
filler_->FindOrAddEntry(parent, native_entries_allocator_)->index(); |
- ASSERT(parent_entry != HeapEntry::kNoEntry); |
+ DCHECK(parent_entry != HeapEntry::kNoEntry); |
Object*** children = group->children; |
for (size_t j = 0; j < group->length; ++j) { |
Object* child = *children[j]; |
@@ -2515,7 +2515,7 @@ void NativeObjectsExplorer::SetNativeRootReference( |
v8::RetainedObjectInfo* info) { |
HeapEntry* child_entry = |
filler_->FindOrAddEntry(info, native_entries_allocator_); |
- ASSERT(child_entry != NULL); |
+ DCHECK(child_entry != NULL); |
NativeGroupRetainedObjectInfo* group_info = |
FindOrAddGroupInfo(info->GetGroupLabel()); |
HeapEntry* group_entry = |
@@ -2530,10 +2530,10 @@ void NativeObjectsExplorer::SetNativeRootReference( |
void NativeObjectsExplorer::SetWrapperNativeReferences( |
HeapObject* wrapper, v8::RetainedObjectInfo* info) { |
HeapEntry* wrapper_entry = filler_->FindEntry(wrapper); |
- ASSERT(wrapper_entry != NULL); |
+ DCHECK(wrapper_entry != NULL); |
HeapEntry* info_entry = |
filler_->FindOrAddEntry(info, native_entries_allocator_); |
- ASSERT(info_entry != NULL); |
+ DCHECK(info_entry != NULL); |
filler_->SetNamedReference(HeapGraphEdge::kInternal, |
wrapper_entry->index(), |
"native", |
@@ -2552,7 +2552,7 @@ void NativeObjectsExplorer::SetRootNativeRootsReference() { |
static_cast<NativeGroupRetainedObjectInfo*>(entry->value); |
HeapEntry* group_entry = |
filler_->FindOrAddEntry(group_info, native_entries_allocator_); |
- ASSERT(group_entry != NULL); |
+ DCHECK(group_entry != NULL); |
filler_->SetIndexedAutoIndexReference( |
HeapGraphEdge::kElement, |
snapshot_->root()->index(), |
@@ -2683,12 +2683,12 @@ class OutputStreamWriter { |
chunk_(chunk_size_), |
chunk_pos_(0), |
aborted_(false) { |
- ASSERT(chunk_size_ > 0); |
+ DCHECK(chunk_size_ > 0); |
} |
bool aborted() { return aborted_; } |
void AddCharacter(char c) { |
- ASSERT(c != '\0'); |
- ASSERT(chunk_pos_ < chunk_size_); |
+ DCHECK(c != '\0'); |
+ DCHECK(chunk_pos_ < chunk_size_); |
chunk_[chunk_pos_++] = c; |
MaybeWriteChunk(); |
} |
@@ -2697,12 +2697,12 @@ class OutputStreamWriter { |
} |
void AddSubstring(const char* s, int n) { |
if (n <= 0) return; |
- ASSERT(static_cast<size_t>(n) <= strlen(s)); |
+ DCHECK(static_cast<size_t>(n) <= strlen(s)); |
const char* s_end = s + n; |
while (s < s_end) { |
int s_chunk_size = |
Min(chunk_size_ - chunk_pos_, static_cast<int>(s_end - s)); |
- ASSERT(s_chunk_size > 0); |
+ DCHECK(s_chunk_size > 0); |
MemCopy(chunk_.start() + chunk_pos_, s, s_chunk_size); |
s += s_chunk_size; |
chunk_pos_ += s_chunk_size; |
@@ -2712,7 +2712,7 @@ class OutputStreamWriter { |
void AddNumber(unsigned n) { AddNumberImpl<unsigned>(n, "%u"); } |
void Finalize() { |
if (aborted_) return; |
- ASSERT(chunk_pos_ < chunk_size_); |
+ DCHECK(chunk_pos_ < chunk_size_); |
if (chunk_pos_ != 0) { |
WriteChunk(); |
} |
@@ -2728,19 +2728,19 @@ class OutputStreamWriter { |
if (chunk_size_ - chunk_pos_ >= kMaxNumberSize) { |
int result = SNPrintF( |
chunk_.SubVector(chunk_pos_, chunk_size_), format, n); |
- ASSERT(result != -1); |
+ DCHECK(result != -1); |
chunk_pos_ += result; |
MaybeWriteChunk(); |
} else { |
EmbeddedVector<char, kMaxNumberSize> buffer; |
int result = SNPrintF(buffer, format, n); |
USE(result); |
- ASSERT(result != -1); |
+ DCHECK(result != -1); |
AddString(buffer.start()); |
} |
} |
void MaybeWriteChunk() { |
- ASSERT(chunk_pos_ <= chunk_size_); |
+ DCHECK(chunk_pos_ <= chunk_size_); |
if (chunk_pos_ == chunk_size_) { |
WriteChunk(); |
} |
@@ -2770,7 +2770,7 @@ void HeapSnapshotJSONSerializer::Serialize(v8::OutputStream* stream) { |
snapshot_->profiler()->allocation_tracker()) { |
allocation_tracker->PrepareForSerialization(); |
} |
- ASSERT(writer_ == NULL); |
+ DCHECK(writer_ == NULL); |
writer_ = new OutputStreamWriter(stream); |
SerializeImpl(); |
delete writer_; |
@@ -2779,7 +2779,7 @@ void HeapSnapshotJSONSerializer::Serialize(v8::OutputStream* stream) { |
void HeapSnapshotJSONSerializer::SerializeImpl() { |
- ASSERT(0 == snapshot_->root()->index()); |
+ DCHECK(0 == snapshot_->root()->index()); |
writer_->AddCharacter('{'); |
writer_->AddString("\"snapshot\":{"); |
SerializeSnapshot(); |
@@ -2892,7 +2892,7 @@ void HeapSnapshotJSONSerializer::SerializeEdge(HeapGraphEdge* edge, |
void HeapSnapshotJSONSerializer::SerializeEdges() { |
List<HeapGraphEdge*>& edges = snapshot_->children(); |
for (int i = 0; i < edges.length(); ++i) { |
- ASSERT(i == 0 || |
+ DCHECK(i == 0 || |
edges[i - 1]->from()->index() <= edges[i]->from()->index()); |
SerializeEdge(edges[i], i == 0); |
if (writer_->aborted()) return; |
@@ -3076,7 +3076,7 @@ static int SerializePosition(int position, const Vector<char>& buffer, |
if (position == -1) { |
buffer[buffer_pos++] = '0'; |
} else { |
- ASSERT(position >= 0); |
+ DCHECK(position >= 0); |
buffer_pos = utoa(static_cast<unsigned>(position + 1), buffer, buffer_pos); |
} |
return buffer_pos; |
@@ -3160,7 +3160,7 @@ void HeapSnapshotJSONSerializer::SerializeString(const unsigned char* s) { |
unibrow::uchar c = unibrow::Utf8::CalculateValue(s, length, &cursor); |
if (c != unibrow::Utf8::kBadChar) { |
WriteUChar(writer_, c); |
- ASSERT(cursor != 0); |
+ DCHECK(cursor != 0); |
s += cursor - 1; |
} else { |
writer_->AddCharacter('?'); |