mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-09-05 17:44:55 -06:00
Core: HEAPLOG flag
git-svn-id: svn://ultimatepp.org/upp/trunk@13452 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
1746865578
commit
0231dc08ab
3 changed files with 36 additions and 4 deletions
|
|
@ -264,7 +264,7 @@ struct HugeHeapDetail {
|
|||
struct Heap : BlkHeap<HugeHeapDetail, 4096> {
|
||||
enum {
|
||||
LUNIT = 256, // granularity of large blocks (size always a multiple of this)
|
||||
LPAGE = 255, // number of LUNITs in large page
|
||||
LPAGE = LUNIT - 1, // number of LUNITs in large page
|
||||
LOFFSET = 64, // offset from 64KB start to the first block header
|
||||
|
||||
NKLASS = 23, // number of small size classes
|
||||
|
|
@ -343,8 +343,8 @@ struct Heap : BlkHeap<HugeHeapDetail, 4096> {
|
|||
};
|
||||
|
||||
static int lclass[];
|
||||
static int free_lclass[LPAGE + 1];
|
||||
static int alloc_lclass[LPAGE + 1];
|
||||
static int free_lclass[256];
|
||||
static int alloc_lclass[256];
|
||||
|
||||
static_assert(sizeof(BlkPrefix) == 16, "Wrong sizeof(BlkPrefix)");
|
||||
static_assert(sizeof(DLink) == 64, "Wrong sizeof(DLink)");
|
||||
|
|
@ -457,6 +457,9 @@ struct Heap : BlkHeap<HugeHeapDetail, 4096> {
|
|||
void Shutdown();
|
||||
static void AuxFinalCheck();
|
||||
|
||||
#ifdef flagHEAPLOG
|
||||
void *AllocSz0(size_t& sz);
|
||||
#endif
|
||||
void *AllocSz(size_t& sz);
|
||||
void Free(void *ptr);
|
||||
size_t GetBlockSize(void *ptr);
|
||||
|
|
|
|||
|
|
@ -128,6 +128,12 @@ void *Heap::Allok(int k)
|
|||
return DbgFreeCheckK(AllocK(k), k);
|
||||
}
|
||||
|
||||
#ifdef flagHEAPLOG
|
||||
|
||||
#define AllocSz AllocSz0
|
||||
|
||||
#endif
|
||||
|
||||
force_inline
|
||||
void *Heap::AllocSz(size_t& sz)
|
||||
{
|
||||
|
|
@ -164,6 +170,24 @@ void *Heap::AllocSz(size_t& sz)
|
|||
return LAlloc(sz);
|
||||
}
|
||||
|
||||
#ifdef flagHEAPLOG
|
||||
|
||||
#undef AllocSz
|
||||
|
||||
static FILE *sLog = fopen(GetExeDirFile("heap.log"), "w");
|
||||
|
||||
force_inline
|
||||
void *Heap::AllocSz(size_t& sz)
|
||||
{
|
||||
size_t sz0 = sz;
|
||||
void *ptr = AllocSz0(sz);
|
||||
if(sLog)
|
||||
fprintf(sLog, "%X %zX %p\n", Thread::GetCurrentId(), sz, ptr);
|
||||
return ptr;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
force_inline
|
||||
void Heap::FreeK(void *ptr, Page *page, int k)
|
||||
{
|
||||
|
|
@ -228,6 +252,10 @@ void Heap::Free(void *ptr, Page *page, int k)
|
|||
force_inline
|
||||
void Heap::Free(void *ptr)
|
||||
{
|
||||
#ifdef flagHEAPLOG
|
||||
if(sLog)
|
||||
fprintf(sLog, "%p\n", ptr);
|
||||
#endif
|
||||
if(!ptr) return;
|
||||
LLOG("Free " << ptr);
|
||||
if(IsSmall(ptr)) {
|
||||
|
|
|
|||
|
|
@ -125,7 +125,8 @@ mainconfig
|
|||
"" = "GUI MT NOGTK",
|
||||
"" = "GUI NOGTK",
|
||||
"" = "GUI MT TEST_HIDPI",
|
||||
"" = "GUI PEAKMEM";
|
||||
"" = "GUI PEAKMEM",
|
||||
"" = "GUI HEAPLOG";
|
||||
|
||||
custom() "",
|
||||
"ASDFASDFASDF",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue