Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8191789

migrate more Thread-SMR stuff from thread.[ch]pp -> threadSMR.[ch]pp

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 10
    • 10
    • hotspot
    • b36
    • generic
    • generic

        A comment from Stefan K during the code review of JDK-8167108:

        6) I think it would be nice if the SMR stuff in thread.hpp were encapsulated into an class instead of added directly to Thread and Threads. I sort-of expected the SMR variables to be moved to threadSMR.hpp.

        For example:

         class Threads: AllStatic {
           friend class VMStructs;
          private:
        + // Safe Memory Reclamation (SMR) support:
        + static Monitor* _smr_delete_lock;
        + // The '_cnt', '_max' and '_times" fields are enabled via
        + // -XX:+EnableThreadSMRStatistics:
        + static uint _smr_delete_lock_wait_cnt;
        + static uint _smr_delete_lock_wait_max;
        + static volatile int _smr_delete_notify;
        + static volatile jint _smr_deleted_thread_cnt;
        + static volatile jint _smr_deleted_thread_time_max;
        + static volatile jint _smr_deleted_thread_times;
        + static ThreadsList* volatile _smr_java_thread_list;
        + static ThreadsList* get_smr_java_thread_list() {
        + return (ThreadsList*)OrderAccess::load_ptr_acquire((void* volatile*)&_smr_java_thread_list);
        + }
        + static ThreadsList* xchg_smr_java_thread_list(ThreadsList* new_list) {
        + return (ThreadsList*)Atomic::xchg_ptr((void*)new_list, (volatile void*)&_smr_java_thread_list);
        + }
        + static long _smr_java_thread_list_alloc_cnt;
        + static long _smr_java_thread_list_free_cnt;
        + static uint _smr_java_thread_list_max;
        + static uint _smr_nested_thread_list_max;
        + static volatile jint _smr_tlh_cnt;
        + static volatile jint _smr_tlh_time_max;
        + static volatile jint _smr_tlh_times;
        + static ThreadsList* _smr_to_delete_list;
        + static uint _smr_to_delete_list_cnt;
        + static uint _smr_to_delete_list_max;

        Could be:

        class Threads: AllStatic {
          friend class VMStructs;
         private:
          // Safe Memory Reclamation (SMR) support:
          SMRSupport _smr_support;

        And SMRSupport could be moved to threadSMR.hpp.

              dcubed Daniel Daugherty
              dcubed Daniel Daugherty
              Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

                Created:
                Updated:
                Resolved: