comparison src/os/windows/vm/osThread_windows.hpp @ 6093:960a442eae91

7161732: Improve handling of thread_id in OSThread Reviewed-by: dholmes, kamg
author rbackman
date Tue, 22 May 2012 10:11:53 +0200
parents 0105f367a14c
children
comparison
equal deleted inserted replaced
6082:4b37c0dafe3a 6093:960a442eae91
23 */ 23 */
24 24
25 #ifndef OS_WINDOWS_VM_OSTHREAD_WINDOWS_HPP 25 #ifndef OS_WINDOWS_VM_OSTHREAD_WINDOWS_HPP
26 #define OS_WINDOWS_VM_OSTHREAD_WINDOWS_HPP 26 #define OS_WINDOWS_VM_OSTHREAD_WINDOWS_HPP
27 27
28 typedef void* HANDLE; 28 typedef void* HANDLE;
29 public:
30 typedef unsigned long thread_id_t;
29 31
30 private: 32 private:
31 // Win32-specific thread information 33 // Win32-specific thread information
32 HANDLE _thread_handle; // Win32 thread handle 34 HANDLE _thread_handle; // Win32 thread handle
33 unsigned long _thread_id; // Win32 thread id
34 HANDLE _interrupt_event; // Event signalled on thread interrupt 35 HANDLE _interrupt_event; // Event signalled on thread interrupt
35 ThreadState _last_state; 36 ThreadState _last_state;
36 37
37 public: 38 public:
38 // The following will only apply in the Win32 implementation, and should only 39 // The following will only apply in the Win32 implementation, and should only
40 HANDLE thread_handle() const { return _thread_handle; } 41 HANDLE thread_handle() const { return _thread_handle; }
41 void set_thread_handle(HANDLE handle) { _thread_handle = handle; } 42 void set_thread_handle(HANDLE handle) { _thread_handle = handle; }
42 HANDLE interrupt_event() const { return _interrupt_event; } 43 HANDLE interrupt_event() const { return _interrupt_event; }
43 void set_interrupt_event(HANDLE interrupt_event) { _interrupt_event = interrupt_event; } 44 void set_interrupt_event(HANDLE interrupt_event) { _interrupt_event = interrupt_event; }
44 45
45
46 static size_t thread_id_size() { return sizeof(unsigned long); }
47 unsigned long thread_id() const { return _thread_id; }
48 #ifndef PRODUCT 46 #ifndef PRODUCT
49 // Used for debugging, return a unique integer for each thread. 47 // Used for debugging, return a unique integer for each thread.
50 int thread_identifier() const { return _thread_id; } 48 int thread_identifier() const { return _thread_id; }
51 #endif 49 #endif
52 #ifdef ASSERT 50 #ifdef ASSERT
54 // 52 //
55 bool valid_reposition_failure() { 53 bool valid_reposition_failure() {
56 return false; 54 return false;
57 } 55 }
58 #endif // ASSERT 56 #endif // ASSERT
59 void set_thread_id(unsigned long thread_id) { _thread_id = thread_id; }
60
61 bool is_try_mutex_enter() { return false; } 57 bool is_try_mutex_enter() { return false; }
62 58
63 // This is a temporary fix for the thread states during 59 // This is a temporary fix for the thread states during
64 // suspend/resume until we throw away OSThread completely. 60 // suspend/resume until we throw away OSThread completely.
65 // NEEDS_CLEANUP 61 // NEEDS_CLEANUP