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

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

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Fixed
    • Affects Version/s: 10
    • Fix Version/s: 10
    • Component/s: hotspot
    • Labels:
    • Subcomponent:
    • Resolved In Build:
      b36
    • CPU:
      generic
    • OS:
      generic

      Backports

        Description

        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.

          Attachments

            Issue Links

              Activity

                People

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

                  Dates

                  • Created:
                    Updated:
                    Resolved: