mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
missed a few cases
This commit is contained in:
parent
143b5df17b
commit
278e10d8ff
@ -1324,9 +1324,14 @@ static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */
|
|||||||
#define DIRECT_MMAP(s) CALL_MMAP(s)
|
#define DIRECT_MMAP(s) CALL_MMAP(s)
|
||||||
#else /* WIN32 */
|
#else /* WIN32 */
|
||||||
|
|
||||||
|
static size_t win32_total_mmap = 0;
|
||||||
|
|
||||||
/* Win32 MMAP via VirtualAlloc */
|
/* Win32 MMAP via VirtualAlloc */
|
||||||
static void* win32mmap(size_t size) {
|
static void* win32mmap(size_t size) {
|
||||||
void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
|
void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
|
||||||
|
if (ptr != 0) {
|
||||||
|
win32_total_mmap += size;
|
||||||
|
}
|
||||||
return (ptr != 0)? ptr: MFAIL;
|
return (ptr != 0)? ptr: MFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1334,6 +1339,9 @@ static void* win32mmap(size_t size) {
|
|||||||
static void* win32direct_mmap(size_t size) {
|
static void* win32direct_mmap(size_t size) {
|
||||||
void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN,
|
void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN,
|
||||||
PAGE_READWRITE);
|
PAGE_READWRITE);
|
||||||
|
if (ptr != 0) {
|
||||||
|
win32_total_mmap += size;
|
||||||
|
}
|
||||||
return (ptr != 0)? ptr: MFAIL;
|
return (ptr != 0)? ptr: MFAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1351,6 +1359,7 @@ static int win32munmap(void* ptr, size_t size) {
|
|||||||
return -1;
|
return -1;
|
||||||
cptr += minfo.RegionSize;
|
cptr += minfo.RegionSize;
|
||||||
size -= minfo.RegionSize;
|
size -= minfo.RegionSize;
|
||||||
|
win32_total_mmap -= minfo.RegionSize;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -3134,6 +3143,7 @@ static void* mmap_alloc(mstate m, size_t nb) {
|
|||||||
if (mmsize > nb) { /* Check for wrap around 0 */
|
if (mmsize > nb) { /* Check for wrap around 0 */
|
||||||
char* mm = (char*)(DIRECT_MMAP(mmsize));
|
char* mm = (char*)(DIRECT_MMAP(mmsize));
|
||||||
if (mm != CMFAIL) {
|
if (mm != CMFAIL) {
|
||||||
|
memory_hook->inc_heap(mmsize);
|
||||||
size_t offset = align_offset(chunk2mem(mm));
|
size_t offset = align_offset(chunk2mem(mm));
|
||||||
size_t psize = mmsize - offset - MMAP_FOOT_PAD;
|
size_t psize = mmsize - offset - MMAP_FOOT_PAD;
|
||||||
mchunkptr p = (mchunkptr)(mm + offset);
|
mchunkptr p = (mchunkptr)(mm + offset);
|
||||||
@ -3172,6 +3182,8 @@ static mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb) {
|
|||||||
char* cp = (char*)CALL_MREMAP((char*)oldp - offset,
|
char* cp = (char*)CALL_MREMAP((char*)oldp - offset,
|
||||||
oldmmsize, newmmsize, 1);
|
oldmmsize, newmmsize, 1);
|
||||||
if (cp != CMFAIL) {
|
if (cp != CMFAIL) {
|
||||||
|
memory_hook->dec_heap(oldsize);
|
||||||
|
memory_hook->inc_heap(nb);
|
||||||
mchunkptr newp = (mchunkptr)(cp + offset);
|
mchunkptr newp = (mchunkptr)(cp + offset);
|
||||||
size_t psize = newmmsize - offset - MMAP_FOOT_PAD;
|
size_t psize = newmmsize - offset - MMAP_FOOT_PAD;
|
||||||
newp->head = (psize|CINUSE_BIT);
|
newp->head = (psize|CINUSE_BIT);
|
||||||
@ -3629,6 +3641,8 @@ static int sys_trim(mstate m, size_t pad) {
|
|||||||
m->trim_check = MAX_SIZE_T;
|
m->trim_check = MAX_SIZE_T;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memory_hook->dec_heap(released);
|
||||||
|
|
||||||
return (released != 0)? 1 : 0;
|
return (released != 0)? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4210,8 +4224,10 @@ void dlfree(void* mem) {
|
|||||||
if ((prevsize & IS_MMAPPED_BIT) != 0) {
|
if ((prevsize & IS_MMAPPED_BIT) != 0) {
|
||||||
prevsize &= ~IS_MMAPPED_BIT;
|
prevsize &= ~IS_MMAPPED_BIT;
|
||||||
psize += prevsize + MMAP_FOOT_PAD;
|
psize += prevsize + MMAP_FOOT_PAD;
|
||||||
if (CALL_MUNMAP((char*)p - prevsize, psize) == 0)
|
if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) {
|
||||||
fm->footprint -= psize;
|
fm->footprint -= psize;
|
||||||
|
memory_hook->dec_heap(psize);
|
||||||
|
}
|
||||||
goto postaction;
|
goto postaction;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user