< prev index next >

test/native/runtime/test_os.cpp

Print this page
rev 13529 : 8185712: [windows] Improve native symbol decoder
Reviewed-by:

*** 141,150 **** --- 141,203 ---- ASSERT_LT(t, eps) << "bad mean"; t = (variance - 0.3355) < 0.0 ? -(variance - 0.3355) : variance - 0.3355; ASSERT_LT(t, eps) << "bad variance"; } + #ifdef _WIN32 + TEST(os, dll_addr_to_function_valid) { + char buf[128] = ""; + int offset = -1; + address valid_function_pointer = (address) JNI_CreateJavaVM; + ASSERT_TRUE(os::dll_address_to_function_name(valid_function_pointer, + buf, sizeof(buf), &offset, true) == true); + ASSERT_TRUE(strstr(buf, "JNI_CreateJavaVM") != NULL); + ASSERT_TRUE(offset >= 0); + } + + TEST(os, dll_addr_to_function_invalid) { + char buf[128]; + int offset; + address invalid_function_pointers[] = { NULL, (address)1, (address)&offset }; + + for (int i = 0; + i < sizeof(invalid_function_pointers) / sizeof(address); + i ++) + { + address addr = invalid_function_pointers[i]; + // We should fail but not crash + strcpy(buf, "blabla"); + offset = 12; + ASSERT_TRUE(os::dll_address_to_function_name(addr, buf, sizeof(buf), + &offset, true) == false); + // buffer should contain "", offset should contain -1 + ASSERT_TRUE(buf[0] == '\0'); + ASSERT_TRUE(offset == -1); + } + } + + #ifdef PLATFORM_PRINT_NATIVE_STACK + TEST(os, platform_print_native_stack) { + bufferedStream bs; + // Note: scratch buffer argument to os::platform_print_native_stack is not + // optional! + char scratch_buffer [255]; + for (int i = 0; i < 3; i ++) { + ASSERT_TRUE(os::platform_print_native_stack(&bs, NULL, scratch_buffer, + sizeof(scratch_buffer))); + ASSERT_TRUE(bs.size() > 0); + // This may depend on debug information files being generated and available + // (e.g. not zipped). + ASSERT_TRUE(::strstr(bs.base(), "platform_print_native_stack") != NULL); + #ifdef _WIN32 + // We have source information on Windows. + ASSERT_TRUE(::strstr(bs.base(), "os_windows_x86.cpp") != NULL); + #endif + } + } + #endif + #endif #ifdef ASSERT TEST_VM_ASSERT_MSG(os, page_size_for_region_with_zero_min_pages, "sanity") { size_t region_size = 16 * os::vm_page_size(); os::page_size_for_region_aligned(region_size, 0); // should assert
< prev index next >