< prev index next >

src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp

Print this page
rev 59956 : 8247819: G1: Process strong OopStorage entries in parallel
Reviewed-by:
Contributed-by: Erik Osterlund <erik.osterlund@oracle.com>, Stefan Karlsson <stefan.karlsson@oracle.com>, Thomas Schatzl <thomas.schatzl@oracle.com>


   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_GC_G1_G1GCPHASETIMES_HPP
  26 #define SHARE_GC_G1_G1GCPHASETIMES_HPP
  27 

  28 #include "gc/shared/referenceProcessorPhaseTimes.hpp"
  29 #include "gc/shared/weakProcessorPhaseTimes.hpp"
  30 #include "logging/logLevel.hpp"
  31 #include "memory/allocation.hpp"
  32 #include "utilities/macros.hpp"
  33 
  34 class LineBuffer;
  35 class G1ParScanThreadState;
  36 class STWGCTimer;
  37 
  38 template <class T> class WorkerDataArray;
  39 
  40 class G1GCPhaseTimes : public CHeapObj<mtGC> {
  41   uint _max_gc_threads;
  42   jlong _gc_start_counter;
  43   double _gc_pause_time_ms;
  44 
  45  public:
  46   enum GCParPhases {
  47     GCWorkerStart,
  48     ExtRootScan,
  49     ThreadRoots,
  50     UniverseRoots,
  51     JNIRoots,
  52     ObjectSynchronizerRoots,
  53     ManagementRoots,
  54     VMGlobalRoots,
  55     CLDGRoots,
  56     JVMTIRoots,
  57     AOT_ONLY(AOTCodeRoots COMMA)
  58     CMRefRoots,
  59     MergeER,



  60     MergeRS,
  61     OptMergeRS,
  62     MergeLB,
  63     MergeHCC,
  64     ScanHR,
  65     OptScanHR,
  66     CodeRoots,
  67     OptCodeRoots,
  68     ObjCopy,
  69     OptObjCopy,
  70     Termination,
  71     OptTermination,
  72     Other,
  73     GCWorkerTotal,
  74     GCWorkerEnd,
  75     StringDedupQueueFixup,
  76     StringDedupTableFixup,
  77     RedirtyCards,
  78     ParFreeCSet,
  79     YoungFreeCSet,
  80     NonYoungFreeCSet,
  81     RebuildFreeList,
  82     MergePSS,
  83     GCParPhasesSentinel
  84   };
  85 
  86   static const GCParPhases ExtRootScanSubPhasesFirst = ThreadRoots;
  87   static const GCParPhases ExtRootScanSubPhasesLast = CMRefRoots;
  88 
  89   enum GCMergeRSWorkTimes {
  90     MergeRSMergedSparse,
  91     MergeRSMergedFine,
  92     MergeRSMergedCoarse,
  93     MergeRSDirtyCards
  94   };
  95 
  96   enum GCScanHRWorkItems {
  97     ScanHRScannedCards,
  98     ScanHRScannedBlocks,
  99     ScanHRClaimedChunks,
 100     ScanHRScannedOptRefs,
 101     ScanHRUsedMemory
 102   };
 103 
 104   enum GCMergeHCCWorkItems {
 105     MergeHCCDirtyCards,
 106     MergeHCCSkippedCards
 107   };




   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_GC_G1_G1GCPHASETIMES_HPP
  26 #define SHARE_GC_G1_G1GCPHASETIMES_HPP
  27 
  28 #include "gc/shared/oopStorageSet.hpp"
  29 #include "gc/shared/referenceProcessorPhaseTimes.hpp"
  30 #include "gc/shared/weakProcessorPhaseTimes.hpp"
  31 #include "logging/logLevel.hpp"
  32 #include "memory/allocation.hpp"
  33 #include "utilities/macros.hpp"
  34 
  35 class LineBuffer;
  36 class G1ParScanThreadState;
  37 class STWGCTimer;
  38 
  39 template <class T> class WorkerDataArray;
  40 
  41 class G1GCPhaseTimes : public CHeapObj<mtGC> {
  42   uint _max_gc_threads;
  43   jlong _gc_start_counter;
  44   double _gc_pause_time_ms;
  45 
  46  public:
  47   enum GCParPhases {
  48     GCWorkerStart,
  49     ExtRootScan,
  50     ThreadRoots,
  51     UniverseRoots,

  52     ObjectSynchronizerRoots,
  53     ManagementRoots,

  54     CLDGRoots,
  55     JVMTIRoots,
  56     AOT_ONLY(AOTCodeRoots COMMA)
  57     CMRefRoots,
  58     // For every OopStorage there will be one element in the enum, starting with
  59     // StrongOopStorageSetRoots.
  60     StrongOopStorageSetRoots,
  61     MergeER = StrongOopStorageSetRoots + OopStorageSet::strong_count,
  62     MergeRS,
  63     OptMergeRS,
  64     MergeLB,
  65     MergeHCC,
  66     ScanHR,
  67     OptScanHR,
  68     CodeRoots,
  69     OptCodeRoots,
  70     ObjCopy,
  71     OptObjCopy,
  72     Termination,
  73     OptTermination,
  74     Other,
  75     GCWorkerTotal,
  76     GCWorkerEnd,
  77     StringDedupQueueFixup,
  78     StringDedupTableFixup,
  79     RedirtyCards,
  80     ParFreeCSet,
  81     YoungFreeCSet,
  82     NonYoungFreeCSet,
  83     RebuildFreeList,
  84     MergePSS,
  85     GCParPhasesSentinel
  86   };
  87 
  88   static const GCParPhases ExtRootScanSubPhasesFirst = ThreadRoots;
  89   static const GCParPhases ExtRootScanSubPhasesLast = GCParPhases(MergeER - 1);
  90 
  91   enum GCMergeRSWorkTimes {
  92     MergeRSMergedSparse,
  93     MergeRSMergedFine,
  94     MergeRSMergedCoarse,
  95     MergeRSDirtyCards
  96   };
  97 
  98   enum GCScanHRWorkItems {
  99     ScanHRScannedCards,
 100     ScanHRScannedBlocks,
 101     ScanHRClaimedChunks,
 102     ScanHRScannedOptRefs,
 103     ScanHRUsedMemory
 104   };
 105 
 106   enum GCMergeHCCWorkItems {
 107     MergeHCCDirtyCards,
 108     MergeHCCSkippedCards
 109   };


< prev index next >