Heap profiler: Add static assertions for heap snapshot entities' sizes.
Review URL: http://codereview.chromium.org/2808112 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5224 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
31fd432f2d
commit
bdf15ec9f3
@ -1188,6 +1188,25 @@ void HeapGraphPath::Print() {
|
|||||||
HeapObject *const HeapSnapshot::kInternalRootObject =
|
HeapObject *const HeapSnapshot::kInternalRootObject =
|
||||||
reinterpret_cast<HeapObject*>(1);
|
reinterpret_cast<HeapObject*>(1);
|
||||||
|
|
||||||
|
|
||||||
|
// It is very important to keep objects that form a heap snapshot
|
||||||
|
// as small as possible.
|
||||||
|
namespace { // Avoid littering the global namespace.
|
||||||
|
|
||||||
|
template <size_t ptr_size> struct SnapshotSizeConstants;
|
||||||
|
|
||||||
|
template <> struct SnapshotSizeConstants<4> {
|
||||||
|
static const int kExpectedHeapGraphEdgeSize = 12;
|
||||||
|
static const int kExpectedHeapEntrySize = 32;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <> struct SnapshotSizeConstants<8> {
|
||||||
|
static const int kExpectedHeapGraphEdgeSize = 24;
|
||||||
|
static const int kExpectedHeapEntrySize = 40;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
HeapSnapshot::HeapSnapshot(HeapSnapshotsCollection* collection,
|
HeapSnapshot::HeapSnapshot(HeapSnapshotsCollection* collection,
|
||||||
const char* title,
|
const char* title,
|
||||||
unsigned uid)
|
unsigned uid)
|
||||||
@ -1197,6 +1216,12 @@ HeapSnapshot::HeapSnapshot(HeapSnapshotsCollection* collection,
|
|||||||
root_entry_index_(-1),
|
root_entry_index_(-1),
|
||||||
raw_entries_(NULL),
|
raw_entries_(NULL),
|
||||||
entries_sorted_(false) {
|
entries_sorted_(false) {
|
||||||
|
STATIC_ASSERT(
|
||||||
|
sizeof(HeapGraphEdge) ==
|
||||||
|
SnapshotSizeConstants<sizeof(void*)>::kExpectedHeapGraphEdgeSize);
|
||||||
|
STATIC_ASSERT(
|
||||||
|
sizeof(HeapEntry) ==
|
||||||
|
SnapshotSizeConstants<sizeof(void*)>::kExpectedHeapEntrySize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user