sgc: fix unmapping of temporary GC space

Instead of unmapping directly, return temporary space to
the page-allocation cache.
This commit is contained in:
Matthew Flatt 2018-03-29 10:08:23 -06:00
parent 0f3f338b22
commit e95c3fe6d5

View File

@ -1388,7 +1388,7 @@ static void *realloc_collect_temp(void *v, intptr_t oldsize, intptr_t newsize)
if (oldsize) if (oldsize)
memcpy(naya, v, oldsize); memcpy(naya, v, oldsize);
if (v) if (v)
munmap(v, (oldsize + SECTOR_SEGMENT_SIZE - 1) >> LOG_SECTOR_SEGMENT_SIZE); free_plain_sector(v, (oldsize + SECTOR_SEGMENT_SIZE - 1) >> LOG_SECTOR_SEGMENT_SIZE, 0);
return naya; return naya;
#elif GET_MEM_VIA_VIRTUAL_ALLOC #elif GET_MEM_VIA_VIRTUAL_ALLOC
@ -1421,7 +1421,7 @@ static void free_collect_temp(void *v, intptr_t oldsize)
brk(save_brk); brk(save_brk);
} }
#elif GET_MEM_VIA_MMAP #elif GET_MEM_VIA_MMAP
munmap(v, (oldsize + SECTOR_SEGMENT_SIZE - 1) >> LOG_SECTOR_SEGMENT_SIZE); free_plain_sector(v, (oldsize + SECTOR_SEGMENT_SIZE - 1) >> LOG_SECTOR_SEGMENT_SIZE, 0);
#elif GET_MEM_VIA_VIRTUAL_ALLOC #elif GET_MEM_VIA_VIRTUAL_ALLOC
VirtualFree(v, 0, MEM_RELEASE); VirtualFree(v, 0, MEM_RELEASE);
#else #else