summaryrefslogtreecommitdiff
path: root/src/central_freelist.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/central_freelist.cc')
-rw-r--r--src/central_freelist.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/central_freelist.cc b/src/central_freelist.cc
index da498e6..7fe8c4f 100644
--- a/src/central_freelist.cc
+++ b/src/central_freelist.cc
@@ -323,4 +323,20 @@ int CentralFreeList::tc_length() {
return used_slots_ * Static::sizemap()->num_objects_to_move(size_class_);
}
+size_t CentralFreeList::OverheadBytes() {
+ SpinLockHolder h(&lock_);
+ size_t overhead = 0;
+ for (const Span* s = empty_.next; s != &empty_; s = s->next) {
+ ASSERT(size_class_ == s->sizeclass);
+ ASSERT(size_class_ != 0);
+ overhead += (s->length * kPageSize) % size_class_;
+ }
+ for (const Span* s = nonempty_.next; s != &nonempty_; s = s->next) {
+ ASSERT(size_class_ == s->sizeclass);
+ ASSERT(size_class_ != 0);
+ overhead += (s->length * kPageSize) % size_class_;
+ }
+ return overhead;
+}
+
} // namespace tcmalloc