Mercurial > hg > truffle
comparison src/os/bsd/vm/os_bsd.cpp @ 12110:4c84d351cca9
8007074: SIGSEGV at ParMarkBitMap::verify_clear()
Summary: Replace the broken large pages implementation on Linux. New flag: -XX:+UseTransparentHugePages - Linux specific flag to turn on transparent huge page hinting with madvise(..., MAP_HUGETLB). Changed behavior: -XX:+UseLargePages - tries to use -XX:+UseTransparentHugePages before trying other large pages implementations (on Linux). Changed behavior: -XX:+UseHugeTLBFS - Use upfront allocation of Large Pages instead of using the broken implementation to dynamically committing large pages. Changed behavior: -XX:LargePageSizeInBytes - Turned off the ability to use this flag on Linux and provides warning to user if set to a value different than the OS chosen large page size. Changed behavior: Setting no large page size - Now defaults to use -XX:UseTransparentHugePages if the OS supports it. Previously, -XX:+UseHugeTLBFS was chosen if the OS was configured to use large pages.
Reviewed-by: tschatzl, dcubed, brutisso
author | stefank |
---|---|
date | Fri, 16 Aug 2013 13:22:32 +0200 |
parents | 3a57fa7a4cd0 |
children | 40136aa2cdb1 e2722a66aba7 |
comparison
equal
deleted
inserted
replaced
12108:badf4244ceae | 12110:4c84d351cca9 |
---|---|
2323 | 2323 |
2324 void os::large_page_init() { | 2324 void os::large_page_init() { |
2325 } | 2325 } |
2326 | 2326 |
2327 | 2327 |
2328 char* os::reserve_memory_special(size_t bytes, char* req_addr, bool exec) { | 2328 char* os::reserve_memory_special(size_t bytes, size_t alignment, char* req_addr, bool exec) { |
2329 fatal("This code is not used or maintained."); | |
2330 | |
2329 // "exec" is passed in but not used. Creating the shared image for | 2331 // "exec" is passed in but not used. Creating the shared image for |
2330 // the code cache doesn't have an SHM_X executable permission to check. | 2332 // the code cache doesn't have an SHM_X executable permission to check. |
2331 assert(UseLargePages && UseSHM, "only for SHM large pages"); | 2333 assert(UseLargePages && UseSHM, "only for SHM large pages"); |
2332 | 2334 |
2333 key_t key = IPC_PRIVATE; | 2335 key_t key = IPC_PRIVATE; |
4750 n = MIN2(n, (int)bufferSize); | 4752 n = MIN2(n, (int)bufferSize); |
4751 | 4753 |
4752 return n; | 4754 return n; |
4753 } | 4755 } |
4754 | 4756 |
4757 #ifndef PRODUCT | |
4758 void TestReserveMemorySpecial_test() { | |
4759 // No tests available for this platform | |
4760 } | |
4761 #endif |