450 static void dec_vthread_transition_disable_count(oop java_thread);
451 static int vthread_transition_disable_count_offset() { return _vthread_transition_disable_count_offset; }
452
453 static bool is_in_vthread_transition(oop java_thread);
454 static void set_is_in_vthread_transition(oop java_thread, bool val);
455 static int is_in_vthread_transition_offset() { return _is_in_vthread_transition_offset; }
456
457 // Clear all scoped value bindings on error
458 static void clear_scopedValueBindings(oop java_thread);
459
460 // Blocker object responsible for thread parking
461 static oop park_blocker(oop java_thread);
462
463 // Write thread status info to threadStatus field of java.lang.Thread.
464 static void set_thread_status(oop java_thread_oop, JavaThreadStatus status);
465 // Read thread status info from threadStatus field of java.lang.Thread.
466 static JavaThreadStatus get_thread_status(oop java_thread_oop);
467
468 static const char* thread_status_name(oop java_thread_oop);
469
470 // Fill in current stack trace, can cause GC
471 static oop async_get_stack_trace(jobject jthread, TRAPS);
472
473 JFR_ONLY(static u2 jfr_epoch(oop java_thread);)
474 JFR_ONLY(static void set_jfr_epoch(oop java_thread, u2 epoch);)
475 JFR_ONLY(static int jfr_epoch_offset() { CHECK_INIT(_jfr_epoch_offset); })
476
477 // Debugging
478 friend class JavaClasses;
479 };
480
481 // Interface to java.lang.Thread$FieldHolder objects
482
483 class java_lang_Thread_FieldHolder : AllStatic {
484 private:
485 static int _group_offset;
486 static int _priority_offset;
487 static int _stackSize_offset;
488 static int _daemon_offset;
489 static int _thread_status_offset;
490
491 static void compute_offsets();
492
|
450 static void dec_vthread_transition_disable_count(oop java_thread);
451 static int vthread_transition_disable_count_offset() { return _vthread_transition_disable_count_offset; }
452
453 static bool is_in_vthread_transition(oop java_thread);
454 static void set_is_in_vthread_transition(oop java_thread, bool val);
455 static int is_in_vthread_transition_offset() { return _is_in_vthread_transition_offset; }
456
457 // Clear all scoped value bindings on error
458 static void clear_scopedValueBindings(oop java_thread);
459
460 // Blocker object responsible for thread parking
461 static oop park_blocker(oop java_thread);
462
463 // Write thread status info to threadStatus field of java.lang.Thread.
464 static void set_thread_status(oop java_thread_oop, JavaThreadStatus status);
465 // Read thread status info from threadStatus field of java.lang.Thread.
466 static JavaThreadStatus get_thread_status(oop java_thread_oop);
467
468 static const char* thread_status_name(oop java_thread_oop);
469
470 JFR_ONLY(static u2 jfr_epoch(oop java_thread);)
471 JFR_ONLY(static void set_jfr_epoch(oop java_thread, u2 epoch);)
472 JFR_ONLY(static int jfr_epoch_offset() { CHECK_INIT(_jfr_epoch_offset); })
473
474 // Debugging
475 friend class JavaClasses;
476 };
477
478 // Interface to java.lang.Thread$FieldHolder objects
479
480 class java_lang_Thread_FieldHolder : AllStatic {
481 private:
482 static int _group_offset;
483 static int _priority_offset;
484 static int _stackSize_offset;
485 static int _daemon_offset;
486 static int _thread_status_offset;
487
488 static void compute_offsets();
489
|