< 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,5 +49,30 @@
 }
 
 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 >