506 static inline Thread* current_or_null();
507 // Returns the current thread, or NULL if not attached, and is
508 // safe for use from signal-handlers
509 static inline Thread* current_or_null_safe();
510
511 // Common thread operations
512 #ifdef ASSERT
513 static void check_for_dangling_thread_pointer(Thread *thread);
514 #endif
515 static void set_priority(Thread* thread, ThreadPriority priority);
516 static ThreadPriority get_priority(const Thread* const thread);
517 static void start(Thread* thread);
518 static void interrupt(Thread* thr);
519 static bool is_interrupted(Thread* thr, bool clear_interrupted);
520
521 void set_native_thread_name(const char *name) {
522 assert(Thread::current() == this, "set_native_thread_name can only be called on the current thread");
523 os::set_native_thread_name(name);
524 }
525
526 ObjectMonitor** om_in_use_list_addr() { return (ObjectMonitor **)&om_in_use_list; }
527 Monitor* SR_lock() const { return _SR_lock; }
528
529 bool has_async_exception() const { return (_suspend_flags & _has_async_exception) != 0; }
530
531 inline void set_suspend_flag(SuspendFlags f);
532 inline void clear_suspend_flag(SuspendFlags f);
533
534 inline void set_has_async_exception();
535 inline void clear_has_async_exception();
536
537 bool do_critical_native_unlock() const { return (_suspend_flags & _critical_native_unlock) != 0; }
538
539 inline void set_critical_native_unlock();
540 inline void clear_critical_native_unlock();
541
542 inline void set_trace_flag();
543 inline void clear_trace_flag();
544
545 // Support for Unhandled Oop detection
546 // Add the field for both, fastdebug and debug, builds to keep
|
506 static inline Thread* current_or_null();
507 // Returns the current thread, or NULL if not attached, and is
508 // safe for use from signal-handlers
509 static inline Thread* current_or_null_safe();
510
511 // Common thread operations
512 #ifdef ASSERT
513 static void check_for_dangling_thread_pointer(Thread *thread);
514 #endif
515 static void set_priority(Thread* thread, ThreadPriority priority);
516 static ThreadPriority get_priority(const Thread* const thread);
517 static void start(Thread* thread);
518 static void interrupt(Thread* thr);
519 static bool is_interrupted(Thread* thr, bool clear_interrupted);
520
521 void set_native_thread_name(const char *name) {
522 assert(Thread::current() == this, "set_native_thread_name can only be called on the current thread");
523 os::set_native_thread_name(name);
524 }
525
526 Monitor* SR_lock() const { return _SR_lock; }
527
528 bool has_async_exception() const { return (_suspend_flags & _has_async_exception) != 0; }
529
530 inline void set_suspend_flag(SuspendFlags f);
531 inline void clear_suspend_flag(SuspendFlags f);
532
533 inline void set_has_async_exception();
534 inline void clear_has_async_exception();
535
536 bool do_critical_native_unlock() const { return (_suspend_flags & _critical_native_unlock) != 0; }
537
538 inline void set_critical_native_unlock();
539 inline void clear_critical_native_unlock();
540
541 inline void set_trace_flag();
542 inline void clear_trace_flag();
543
544 // Support for Unhandled Oop detection
545 // Add the field for both, fastdebug and debug, builds to keep
|