< prev index next >

src/hotspot/os/linux/os_linux.cpp

Print this page
rev 52365 : [mq]: 8213058
rev 52366 : [mq]: 8213058-2

*** 5954,5971 **** /////////////// Unit tests /////////////// #ifndef PRODUCT - #define test_log(...) \ - do { \ - if (VerboseInternalVMTests) { \ - tty->print_cr(__VA_ARGS__); \ - tty->flush(); \ - } \ - } while (false) - class TestReserveMemorySpecial : AllStatic { public: static void small_page_write(void* addr, size_t size) { size_t page_size = os::vm_page_size(); --- 5954,5963 ----
*** 5978,5989 **** static void test_reserve_memory_special_huge_tlbfs_only(size_t size) { if (!UseHugeTLBFS) { return; } - test_log("test_reserve_memory_special_huge_tlbfs_only(" SIZE_FORMAT ")", size); - char* addr = os::Linux::reserve_memory_special_huge_tlbfs_only(size, NULL, false); if (addr != NULL) { small_page_write(addr, size); --- 5970,5979 ----
*** 6038,6095 **** // mapping will serve as a value for a "good" req_addr (case 2). The second // mapping, still intact, as "bad" req_addr (case 3). ::munmap(mapping1, mapping_size); // Case 1 - test_log("%s, req_addr NULL:", __FUNCTION__); - test_log("size align result"); - for (int i = 0; i < num_sizes; i++) { const size_t size = sizes[i]; for (size_t alignment = ag; is_aligned(size, alignment); alignment *= 2) { char* p = os::Linux::reserve_memory_special_huge_tlbfs_mixed(size, alignment, NULL, false); - test_log(SIZE_FORMAT_HEX " " SIZE_FORMAT_HEX " -> " PTR_FORMAT " %s", - size, alignment, p2i(p), (p != NULL ? "" : "(failed)")); if (p != NULL) { assert(is_aligned(p, alignment), "must be"); small_page_write(p, size); os::Linux::release_memory_special_huge_tlbfs(p, size); } } } // Case 2 - test_log("%s, req_addr non-NULL:", __FUNCTION__); - test_log("size align req_addr result"); - for (int i = 0; i < num_sizes; i++) { const size_t size = sizes[i]; for (size_t alignment = ag; is_aligned(size, alignment); alignment *= 2) { char* const req_addr = align_up(mapping1, alignment); char* p = os::Linux::reserve_memory_special_huge_tlbfs_mixed(size, alignment, req_addr, false); - test_log(SIZE_FORMAT_HEX " " SIZE_FORMAT_HEX " " PTR_FORMAT " -> " PTR_FORMAT " %s", - size, alignment, p2i(req_addr), p2i(p), - ((p != NULL ? (p == req_addr ? "(exact match)" : "") : "(failed)"))); if (p != NULL) { assert(p == req_addr, "must be"); small_page_write(p, size); os::Linux::release_memory_special_huge_tlbfs(p, size); } } } // Case 3 - test_log("%s, req_addr non-NULL with preexisting mapping:", __FUNCTION__); - test_log("size align req_addr result"); - for (int i = 0; i < num_sizes; i++) { const size_t size = sizes[i]; for (size_t alignment = ag; is_aligned(size, alignment); alignment *= 2) { char* const req_addr = align_up(mapping2, alignment); char* p = os::Linux::reserve_memory_special_huge_tlbfs_mixed(size, alignment, req_addr, false); - test_log(SIZE_FORMAT_HEX " " SIZE_FORMAT_HEX " " PTR_FORMAT " -> " PTR_FORMAT " %s", - size, alignment, p2i(req_addr), p2i(p), ((p != NULL ? "" : "(failed)"))); // as the area around req_addr contains already existing mappings, the API should always // return NULL (as per contract, it cannot return another address) assert(p == NULL, "must be"); } } --- 6028,6069 ----
*** 6110,6121 **** static void test_reserve_memory_special_shm(size_t size, size_t alignment) { if (!UseSHM) { return; } - test_log("test_reserve_memory_special_shm(" SIZE_FORMAT ", " SIZE_FORMAT ")", size, alignment); - char* addr = os::Linux::reserve_memory_special_shm(size, alignment, NULL, false); if (addr != NULL) { assert(is_aligned(addr, alignment), "Check"); assert(is_aligned(addr, os::large_page_size()), "Check"); --- 6084,6093 ----
< prev index next >