Mercurial > hg > graal-jvmci-8
comparison src/os/solaris/vm/os_solaris.cpp @ 8711:6b803ba47588
8008257: NMT: assert(new_rec->is_allocation_record()) failed when running with shared memory option
Summary: Corrected virtual memory recording and tagging code when large pages are used
Reviewed-by: coleenp, ccheung
author | zgu |
---|---|
date | Thu, 07 Mar 2013 14:06:44 -0500 |
parents | 5cd2fac2ae70 |
children | 15401203db6b |
comparison
equal
deleted
inserted
replaced
8710:9058789475af | 8711:6b803ba47588 |
---|---|
3418 return NULL; | 3418 return NULL; |
3419 } | 3419 } |
3420 if ((retAddr != NULL) && UseNUMAInterleaving) { | 3420 if ((retAddr != NULL) && UseNUMAInterleaving) { |
3421 numa_make_global(retAddr, size); | 3421 numa_make_global(retAddr, size); |
3422 } | 3422 } |
3423 | |
3424 // The memory is committed | |
3425 address pc = CALLER_PC; | |
3426 MemTracker::record_virtual_memory_reserve((address)retAddr, size, pc); | |
3427 MemTracker::record_virtual_memory_commit((address)retAddr, size, pc); | |
3428 | |
3423 return retAddr; | 3429 return retAddr; |
3424 } | 3430 } |
3425 | 3431 |
3426 bool os::release_memory_special(char* base, size_t bytes) { | 3432 bool os::release_memory_special(char* base, size_t bytes) { |
3427 // detaching the SHM segment will also delete it, see reserve_memory_special() | 3433 // detaching the SHM segment will also delete it, see reserve_memory_special() |
3428 int rslt = shmdt(base); | 3434 int rslt = shmdt(base); |
3429 return rslt == 0; | 3435 if (rslt == 0) { |
3436 MemTracker::record_virtual_memory_uncommit((address)base, bytes); | |
3437 MemTracker::record_virtual_memory_release((address)base, bytes); | |
3438 return true; | |
3439 } else { | |
3440 return false; | |
3441 } | |
3430 } | 3442 } |
3431 | 3443 |
3432 size_t os::large_page_size() { | 3444 size_t os::large_page_size() { |
3433 return _large_page_size; | 3445 return _large_page_size; |
3434 } | 3446 } |