< prev index next >

src/os/bsd/vm/osThread_bsd.cpp

Print this page
rev 8802 : G1 performance improvements: card batching, joining, sorting, prefetching and write barrier fence elision and simplification based on a global syncrhonization using handshakes piggybacking on thread-local safepoints.

*** 49,53 **** --- 49,78 ---- } void OSThread::pd_destroy() { delete _startThread_lock; } + + bool OSThread::is_online() { + #ifdef __APPLE__ + mach_msg_type_number_t thread_info_count = THREAD_BASIC_INFO_COUNT; + thread_basic_info_data_t thread_info_data; + + kern_return_t kr = thread_info( + _thread_id, + THREAD_BASIC_INFO, + reinterpret_cast<thread_info_t>(&thread_info_data), + &thread_info_count); + if (kr != KERN_SUCCESS) { + return false; + } + + if (thread_info_data.run_state != TH_STATE_RUNNING) return false; + + const bool swapped = (thread_info_data.flags & TH_FLAGS_SWAPPED); + const bool idle = (thread_info_data.flags & TH_FLAGS_IDLE); + + return !swapped && !idle; + #else + return true; + #endif + }
< prev index next >