クラス TCMalloc_PageHeap

TCMalloc_PageHeapのコラボレーション図

Collaboration graph
[凡例]

すべてのメンバ一覧

Public メソッド

 TCMalloc_PageHeap ()
SpanNew (Length n)
void Delete (Span *span)
void RegisterSizeClass (Span *span, size_t sc)
SpanSplit (Span *span, Length n)
SpanGetDescriptor (PageID p) const
void Dump (TCMalloc_Printer *out)
uint64_t SystemBytes () const
uint64_t FreeBytes () const
bool Check ()
bool CheckList (Span *list, Length min_pages, Length max_pages)
 TCMalloc_PageHeap ()
SpanNew (Length n)
void Delete (Span *span)
void RegisterSizeClass (Span *span, size_t sc)
SpanSplit (Span *span, Length n)
SpanGetDescriptor (PageID p) const
void Dump (TCMalloc_Printer *out)
uint64_t SystemBytes () const
uint64_t FreeBytes () const
bool Check ()
bool CheckList (Span *list, Length min_pages, Length max_pages)
void ReleaseFreePages ()
size_t GetSizeClassIfCached (PageID p) const
void CacheSizeClass (PageID p, size_t cl) const

Private 型

typedef MapSelector< 8 *sizeof(uintptr_t)>
::Type 
PageMap
typedef MapSelector< 8 *sizeof(uintptr_t)>
::Type 
PageMap
typedef MapSelector< 8 *sizeof(uintptr_t)>
::CacheType 
PageMapCache

Private メソッド

bool GrowHeap (Length n)
void Carve (Span *span, Length n)
void RecordSpan (Span *span)
bool GrowHeap (Length n)
void Carve (Span *span, Length n, bool released)
void RecordSpan (Span *span)
SpanAllocLarge (Length n)
void IncrementalScavenge (Length n)

Private 変数

PageMap pagemap_
Span large_
Span free_ [kMaxPages]
uintptr_t free_pages_
uint64_t system_bytes_
PageMapCache pagemap_cache_
SpanList large_
SpanList free_ [kMaxPages]
int64_t scavenge_counter_
int scavenge_index_

構成

struct  SpanList


説明

tcmalloc-0.8/tcmalloc.cc682 行で定義されています。


型定義

typedef MapSelector<8*sizeof(uintptr_t)>::Type TCMalloc_PageHeap::PageMap [private]

tcmalloc-0.8/tcmalloc.cc733 行で定義されています。

typedef MapSelector<8*sizeof(uintptr_t)>::Type TCMalloc_PageHeap::PageMap [private]

tcmalloc-0.93/tcmalloc.cc865 行で定義されています。

typedef MapSelector<8*sizeof(uintptr_t)>::CacheType TCMalloc_PageHeap::PageMapCache [private]

tcmalloc-0.93/tcmalloc.cc866 行で定義されています。


コンストラクタとデストラクタ

TCMalloc_PageHeap::TCMalloc_PageHeap (  ) 

tcmalloc-0.8/tcmalloc.cc765 行で定義されています。

参照先 DLL_Init(), free_, kMaxPages, と large_.

TCMalloc_PageHeap::TCMalloc_PageHeap (  ) 


関数

Span * TCMalloc_PageHeap::New ( Length  n  ) 

void TCMalloc_PageHeap::Delete ( Span span  ) 

void TCMalloc_PageHeap::RegisterSizeClass ( Span span,
size_t  sc 
)

Span * TCMalloc_PageHeap::Split ( Span span,
Length  n 
)

Span* TCMalloc_PageHeap::GetDescriptor ( PageID  p  )  const [inline]

tcmalloc-0.8/tcmalloc.cc713 行で定義されています。

参照先 pagemap_.

参照元 CheckList(), Delete(), と RegisterSizeClass().

void TCMalloc_PageHeap::Dump ( TCMalloc_Printer out  ) 

uint64_t TCMalloc_PageHeap::SystemBytes (  )  const [inline]

tcmalloc-0.8/tcmalloc.cc721 行で定義されています。

参照先 system_bytes_.

uint64_t TCMalloc_PageHeap::FreeBytes (  )  const [inline]

tcmalloc-0.8/tcmalloc.cc724 行で定義されています。

参照先 free_pages_, と kPageShift.

bool TCMalloc_PageHeap::Check (  ) 

tcmalloc-0.8/tcmalloc.cc1014 行で定義されています。

参照先 ASSERT, CheckList(), free_, kMaxPages, と large_.

参照元 AllocLarge(), Delete(), GrowHeap(), New(), と ReleaseFreePages().

bool TCMalloc_PageHeap::CheckList ( Span list,
Length  min_pages,
Length  max_pages 
)

tcmalloc-0.8/tcmalloc.cc1023 行で定義されています。

参照先 CHECK_CONDITION, GetDescriptor(), と Span::next.

参照元 Check().

bool TCMalloc_PageHeap::GrowHeap ( Length  n  )  [private]

void TCMalloc_PageHeap::Carve ( Span span,
Length  n 
) [private]

void TCMalloc_PageHeap::RecordSpan ( Span span  )  [inline, private]

tcmalloc-0.8/tcmalloc.cc757 行で定義されています。

参照先 Span::length, pagemap_, と Span::start.

参照元 Carve(), GrowHeap(), と Split().

Span* TCMalloc_PageHeap::New ( Length  n  ) 

void TCMalloc_PageHeap::Delete ( Span span  ) 

void TCMalloc_PageHeap::RegisterSizeClass ( Span span,
size_t  sc 
)

Span* TCMalloc_PageHeap::Split ( Span span,
Length  n 
)

Span* TCMalloc_PageHeap::GetDescriptor ( PageID  p  )  const [inline]

tcmalloc-0.93/tcmalloc.cc832 行で定義されています。

参照先 pagemap_.

void TCMalloc_PageHeap::Dump ( TCMalloc_Printer out  ) 

uint64_t TCMalloc_PageHeap::SystemBytes (  )  const [inline]

tcmalloc-0.93/tcmalloc.cc840 行で定義されています。

参照先 system_bytes_.

uint64_t TCMalloc_PageHeap::FreeBytes (  )  const [inline]

tcmalloc-0.93/tcmalloc.cc843 行で定義されています。

参照先 free_pages_.

bool TCMalloc_PageHeap::Check (  ) 

bool TCMalloc_PageHeap::CheckList ( Span list,
Length  min_pages,
Length  max_pages 
)

void TCMalloc_PageHeap::ReleaseFreePages (  ) 

tcmalloc-0.93/tcmalloc.cc1345 行で定義されています。

参照先 ASSERT, Check(), free_, large_, と ReleaseFreeList().

size_t TCMalloc_PageHeap::GetSizeClassIfCached ( PageID  p  )  const [inline]

tcmalloc-0.93/tcmalloc.cc858 行で定義されています。

参照先 pagemap_cache_.

void TCMalloc_PageHeap::CacheSizeClass ( PageID  p,
size_t  cl 
) const [inline]

tcmalloc-0.93/tcmalloc.cc861 行で定義されています。

参照先 pagemap_cache_.

bool TCMalloc_PageHeap::GrowHeap ( Length  n  )  [private]

void TCMalloc_PageHeap::Carve ( Span span,
Length  n,
bool  released 
) [private]

void TCMalloc_PageHeap::RecordSpan ( Span span  )  [inline, private]

tcmalloc-0.93/tcmalloc.cc901 行で定義されています。

参照先 Span::length, pagemap_, と Span::start.

Span * TCMalloc_PageHeap::AllocLarge ( Length  n  )  [private]

tcmalloc-0.93/tcmalloc.cc979 行で定義されています。

参照先 ASSERT, Carve(), Check(), free_pages_, large_, Span::length, Span::next, と Span::start.

void TCMalloc_PageHeap::IncrementalScavenge ( Length  n  )  [private]


変数

uintptr_t TCMalloc_PageHeap::free_pages_ [private]

tcmalloc-0.8/tcmalloc.cc743 行で定義されています。

参照元 AllocLarge(), Delete(), Dump(), FreeBytes(), と New().

tcmalloc-0.8/tcmalloc.cc746 行で定義されています。

参照元 GrowHeap(), と SystemBytes().

tcmalloc-0.93/tcmalloc.cc868 行で定義されています。

参照元 CacheSizeClass(), と GetSizeClassIfCached().

tcmalloc-0.93/tcmalloc.cc879 行で定義されています。

tcmalloc-0.93/tcmalloc.cc882 行で定義されています。

tcmalloc-0.93/tcmalloc.cc917 行で定義されています。

参照元 IncrementalScavenge().

tcmalloc-0.93/tcmalloc.cc920 行で定義されています。

参照元 IncrementalScavenge().


このクラスの説明は次のファイルから生成されました:

Thu Oct 8 05:01:14 2009に生成されました。  doxygen 1.5.6