Core: HEAPLOG improved

git-svn-id: svn://ultimatepp.org/upp/trunk@13458 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2019-06-29 18:07:52 +00:00
parent 7b8b997493
commit 96f83e17d0
3 changed files with 41 additions and 42 deletions

View file

@ -457,9 +457,6 @@ 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);

View file

@ -48,7 +48,6 @@ void *Heap::TryLAlloc(int i0, word wcount)
LBlkHeader *h = l->next;
if(h != l) {
ASSERT(h->GetSize() >= wcount);
RTIMING("MakeAlloc");
lheap.MakeAlloc(h, wcount);
h->heap = this;
return (BlkPrefix *)h + 1;

View file

@ -128,12 +128,6 @@ void *Heap::Allok(int k)
return DbgFreeCheckK(AllocK(k), k);
}
#ifdef flagHEAPLOG
#define AllocSz AllocSz0
#endif
force_inline
void *Heap::AllocSz(size_t& sz)
{
@ -170,28 +164,6 @@ void *Heap::AllocSz(size_t& sz)
return LAlloc(sz);
}
#ifdef flagHEAPLOG
#undef AllocSz
StaticMutex sHeapLogLock;
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) {
Mutex::Lock __(sHeapLogLock);
fprintf(sLog, "%x %zx %p\n", Thread::GetCurrentId(), sz, ptr);
}
return ptr;
}
#endif
force_inline
void Heap::FreeK(void *ptr, Page *page, int k)
{
@ -256,12 +228,6 @@ void Heap::Free(void *ptr, Page *page, int k)
force_inline
void Heap::Free(void *ptr)
{
#ifdef flagHEAPLOG
if(sLog) {
Mutex::Lock __(sHeapLogLock);
fprintf(sLog, "-%x %p\n", Thread::GetCurrentId(), ptr);
}
#endif
if(!ptr) return;
LLOG("Free " << ptr);
if(IsSmall(ptr)) {
@ -399,21 +365,56 @@ size_t GetMemoryBlockSize_(void *ptr)
#else
#ifdef flagHEAPLOG
#undef AllocSz
StaticMutex sHeapLogLock;
static FILE *sLog = fopen(GetExeDirFile("heap.log"), "w");
void LogFree(void *ptr)
{
if(sLog) {
Mutex::Lock __(sHeapLogLock);
fprintf(sLog, "-%x %p\n", Thread::GetCurrentId(), ptr);
}
}
void *LogAlloc(void *ptr, size_t sz)
{
if(sLog) {
Mutex::Lock __(sHeapLogLock);
fprintf(sLog, "%x %zx %p\n", Thread::GetCurrentId(), sz, ptr);
}
return ptr;
}
#else
inline void LogFree(void *ptr) {}
inline void *LogAlloc(void *ptr, size_t sz) { return ptr; }
#endif
void *MemoryAlloc(size_t sz)
{
LTIMING("MemoryAlloc");
return ThreadHeap()->AllocSz(sz);
return LogAlloc(ThreadHeap()->AllocSz(sz), sz);
}
void *MemoryAllocSz(size_t& sz)
{
LTIMING("MemoryAllocSz");
return ThreadHeap()->AllocSz(sz);
return LogAlloc(ThreadHeap()->AllocSz(sz), sz);
}
void MemoryFree(void *ptr)
{
LTIMING("MemoryFree");
LogFree(ptr);
ThreadHeap()->Free(ptr);
}
@ -430,24 +431,26 @@ bool MemoryTryRealloc__(void *ptr, size_t& size)
void *MemoryAlloc32()
{
LTIMING("MemoryAlloc32");
return ThreadHeap()->Alloc32();
return LogAlloc(ThreadHeap()->Alloc32(), 32);
}
void MemoryFree32(void *ptr)
{
LTIMING("MemoryFree32");
LogFree(ptr);
ThreadHeap()->Free32(ptr);
}
void *MemoryAlloc48()
{
LTIMING("MemoryAlloc48");
return ThreadHeap()->Alloc48();
return LogAlloc(ThreadHeap()->Alloc48(), 48);
}
void MemoryFree48(void *ptr)
{
LTIMING("MemoryFree48");
LogFree(ptr);
ThreadHeap()->Free48(ptr);
}