< prev index next >

src/share/vm/utilities/decoder.cpp

Print this page
rev 13549 : 8185712: [windows] Improve native symbol decoder
Reviewed-by: goetz, zgu

*** 26,39 **** #include "prims/jvm.h" #include "runtime/os.hpp" #include "utilities/decoder.hpp" #include "utilities/vmError.hpp" ! #if defined(_WINDOWS) ! #include "decoder_windows.hpp" ! #include "windbghelp.hpp" ! #elif defined(__APPLE__) #include "decoder_machO.hpp" #elif defined(AIX) #include "decoder_aix.hpp" #else #include "decoder_elf.hpp" --- 26,37 ---- #include "prims/jvm.h" #include "runtime/os.hpp" #include "utilities/decoder.hpp" #include "utilities/vmError.hpp" ! #ifndef _WINDOWS ! #if defined(__APPLE__) #include "decoder_machO.hpp" #elif defined(AIX) #include "decoder_aix.hpp" #else #include "decoder_elf.hpp"
*** 65,77 **** } AbstractDecoder* Decoder::create_decoder() { AbstractDecoder* decoder; ! #if defined(_WINDOWS) ! decoder = new (std::nothrow) WindowsDecoder(); ! #elif defined (__APPLE__) decoder = new (std::nothrow)MachODecoder(); #elif defined(AIX) decoder = new (std::nothrow)AIXDecoder(); #else decoder = new (std::nothrow)ElfDecoder(); --- 63,73 ---- } AbstractDecoder* Decoder::create_decoder() { AbstractDecoder* decoder; ! #if defined (__APPLE__) decoder = new (std::nothrow)MachODecoder(); #elif defined(AIX) decoder = new (std::nothrow)AIXDecoder(); #else decoder = new (std::nothrow)ElfDecoder();
*** 134,171 **** get_error_handler_instance(): get_shared_instance(); assert(decoder != NULL, "null decoder"); return decoder->demangle(symbol, buf, buflen); } ! bool Decoder::can_decode_C_frame_in_vm() { ! assert(_shared_decoder_lock != NULL, "Just check"); ! bool error_handling_thread = os::current_thread_id() == VMError::first_error_tid; ! MutexLockerEx locker(error_handling_thread ? NULL : _shared_decoder_lock, true); ! AbstractDecoder* decoder = error_handling_thread ? ! get_error_handler_instance(): get_shared_instance(); ! assert(decoder != NULL, "null decoder"); ! return decoder->can_decode_C_frame_in_vm(); } ! /* ! * Shutdown shared decoder and replace it with ! * _do_nothing_decoder. Do nothing with error handler ! * instance, since the JVM is going down. ! */ ! void Decoder::shutdown() { ! assert(_shared_decoder_lock != NULL, "Just check"); ! MutexLockerEx locker(_shared_decoder_lock, true); ! ! if (_shared_decoder != NULL && ! _shared_decoder != &_do_nothing_decoder) { ! delete _shared_decoder; ! } ! ! _shared_decoder = &_do_nothing_decoder; } ! void Decoder::print_state_on(outputStream* st) { ! #ifdef _WINDOWS ! WindowsDbgHelp::print_state_on(st); ! #endif ! } --- 130,143 ---- get_error_handler_instance(): get_shared_instance(); assert(decoder != NULL, "null decoder"); return decoder->demangle(symbol, buf, buflen); } ! void Decoder::print_state_on(outputStream* st) { } ! bool Decoder::get_source_info(address pc, char* buf, size_t buflen, int* line) { ! return false; } ! #endif // !_WINDOWS
< prev index next >