< prev index next >

src/hotspot/share/runtime/threadIdentifier.cpp

Print this page
*** 24,16 ***
  
  #include "precompiled.hpp"
  #include "runtime/atomic.hpp"
  #include "runtime/threadIdentifier.hpp"
  
! static volatile int64_t next_thread_id = 2; // starting at 2, excluding the primordial thread id
  
  int64_t ThreadIdentifier::unsafe_offset() {
    return reinterpret_cast<int64_t>(&next_thread_id);
  }
  
  int64_t ThreadIdentifier::next() {
    int64_t next_tid;
    do {
      next_tid = Atomic::load(&next_thread_id);
    } while (Atomic::cmpxchg(&next_thread_id, next_tid, next_tid + 1) != next_tid);
--- 24,28 ---
  
  #include "precompiled.hpp"
  #include "runtime/atomic.hpp"
  #include "runtime/threadIdentifier.hpp"
  
! // starting at 3, excluding reserved values defined in ObjectMonitor.hpp
+ static const int64_t INITIAL_TID = 3;
+ static volatile int64_t next_thread_id = INITIAL_TID;
+ 
+ #ifdef ASSERT
+ int64_t ThreadIdentifier::initial() {
+   return INITIAL_TID;
+ }
+ #endif
  
  int64_t ThreadIdentifier::unsafe_offset() {
    return reinterpret_cast<int64_t>(&next_thread_id);
  }
  
+ int64_t ThreadIdentifier::current() {
+   return Atomic::load(&next_thread_id);
+ }
+ 
  int64_t ThreadIdentifier::next() {
    int64_t next_tid;
    do {
      next_tid = Atomic::load(&next_thread_id);
    } while (Atomic::cmpxchg(&next_thread_id, next_tid, next_tid + 1) != next_tid);
< prev index next >