< prev index next >

src/hotspot/os/aix/os_aix.cpp

Print this page




2473 bool os::release_memory_special(char* base, size_t bytes) {
2474   // Detaching the SHM segment will also delete it, see reserve_memory_special().
2475   Unimplemented();
2476   return false;
2477 }
2478 
2479 size_t os::large_page_size() {
2480   return _large_page_size;
2481 }
2482 
2483 bool os::can_commit_large_page_memory() {
2484   // Does not matter, we do not support huge pages.
2485   return false;
2486 }
2487 
2488 bool os::can_execute_large_page_memory() {
2489   // Does not matter, we do not support huge pages.
2490   return false;
2491 }
2492 
















2493 // Reserve memory at an arbitrary address, only if that area is
2494 // available (and not reserved for something else).
2495 char* os::pd_attempt_reserve_memory_at(size_t bytes, char* requested_addr) {
2496   char* addr = NULL;
2497 
2498   // Always round to os::vm_page_size(), which may be larger than 4K.
2499   bytes = align_up(bytes, os::vm_page_size());
2500 
2501   // In 4K mode always use mmap.
2502   // In 64K mode allocate small sizes with mmap, large ones with 64K shmatted.
2503   if (os::vm_page_size() == 4*K) {
2504     return reserve_mmaped_memory(bytes, requested_addr, 0);
2505   } else {
2506     if (bytes >= Use64KPagesThreshold) {
2507       return reserve_shmated_memory(bytes, requested_addr, 0);
2508     } else {
2509       return reserve_mmaped_memory(bytes, requested_addr, 0);
2510     }
2511   }
2512 




2473 bool os::release_memory_special(char* base, size_t bytes) {
2474   // Detaching the SHM segment will also delete it, see reserve_memory_special().
2475   Unimplemented();
2476   return false;
2477 }
2478 
2479 size_t os::large_page_size() {
2480   return _large_page_size;
2481 }
2482 
2483 bool os::can_commit_large_page_memory() {
2484   // Does not matter, we do not support huge pages.
2485   return false;
2486 }
2487 
2488 bool os::can_execute_large_page_memory() {
2489   // Does not matter, we do not support huge pages.
2490   return false;
2491 }
2492 
2493 char* os::pd_attempt_reserve_memory_at(size_t bytes, char* requested_addr, int file_desc) {
2494   assert(file_desc >= 0, "file_desc is not valid");
2495   char* result = NULL;
2496 
2497   // Always round to os::vm_page_size(), which may be larger than 4K.
2498   bytes = align_up(bytes, os::vm_page_size());
2499   result = reserve_mmaped_memory(bytes, requested_addr, 0);
2500   
2501   if (result != NULL) {
2502     if (replace_existing_mapping_with_file_mapping(result, bytes, file_desc) == NULL) {
2503       vm_exit_during_initialization(err_msg("Error in mapping Java heap at the given filesystem directory"));
2504     }
2505   }
2506   return result;
2507 }
2508 
2509 // Reserve memory at an arbitrary address, only if that area is
2510 // available (and not reserved for something else).
2511 char* os::pd_attempt_reserve_memory_at(size_t bytes, char* requested_addr) {
2512   char* addr = NULL;
2513 
2514   // Always round to os::vm_page_size(), which may be larger than 4K.
2515   bytes = align_up(bytes, os::vm_page_size());
2516 
2517   // In 4K mode always use mmap.
2518   // In 64K mode allocate small sizes with mmap, large ones with 64K shmatted.
2519   if (os::vm_page_size() == 4*K) {
2520     return reserve_mmaped_memory(bytes, requested_addr, 0);
2521   } else {
2522     if (bytes >= Use64KPagesThreshold) {
2523       return reserve_shmated_memory(bytes, requested_addr, 0);
2524     } else {
2525       return reserve_mmaped_memory(bytes, requested_addr, 0);
2526     }
2527   }
2528 


< prev index next >