hotspot/src/share/vm/gc_implementation/g1/g1GCPhaseTimes.cpp
author tschatzl
Wed, 23 Jul 2014 09:03:32 +0200
changeset 25889 221296ac4359
parent 25492 d27050bdfb04
child 25941 cbe8a62f98ce
permissions -rw-r--r--
8027959: Early reclamation of large objects in G1 Summary: Try to reclaim humongous objects at every young collection after doing a conservative estimate of its liveness. Reviewed-by: brutisso, mgerdin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
     1
/*
23451
ed2b8bb28fed 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents: 19339
diff changeset
     2
 * Copyright (c) 2013, 2014 Oracle and/or its affiliates. All rights reserved.
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
     4
 *
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
     7
 * published by the Free Software Foundation.
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
     8
 *
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    13
 * accompanied this code).
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    14
 *
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    18
 *
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    21
 * questions.
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    22
 *
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    23
 */
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    24
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    25
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    26
#include "precompiled.hpp"
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    27
#include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    28
#include "gc_implementation/g1/g1GCPhaseTimes.hpp"
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    29
#include "gc_implementation/g1/g1Log.hpp"
23472
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
    30
#include "gc_implementation/g1/g1StringDedup.hpp"
25351
7c198a690050 8044775: Improve usage of umbrella header atomic.inline.hpp.
goetz
parents: 24424
diff changeset
    31
#include "runtime/atomic.inline.hpp"
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    32
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    33
// Helper class for avoiding interleaved logging
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    34
class LineBuffer: public StackObj {
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    35
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    36
private:
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    37
  static const int BUFFER_LEN = 1024;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    38
  static const int INDENT_CHARS = 3;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    39
  char _buffer[BUFFER_LEN];
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    40
  int _indent_level;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    41
  int _cur;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    42
24424
2658d7834c6e 8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents: 24104
diff changeset
    43
  void vappend(const char* format, va_list ap)  ATTRIBUTE_PRINTF(2, 0) {
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    44
    int res = vsnprintf(&_buffer[_cur], BUFFER_LEN - _cur, format, ap);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    45
    if (res != -1) {
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    46
      _cur += res;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    47
    } else {
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    48
      DEBUG_ONLY(warning("buffer too small in LineBuffer");)
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    49
      _buffer[BUFFER_LEN -1] = 0;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    50
      _cur = BUFFER_LEN; // vsnprintf above should not add to _buffer if we are called again
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    51
    }
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    52
  }
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    53
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    54
public:
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    55
  explicit LineBuffer(int indent_level): _indent_level(indent_level), _cur(0) {
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    56
    for (; (_cur < BUFFER_LEN && _cur < (_indent_level * INDENT_CHARS)); _cur++) {
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    57
      _buffer[_cur] = ' ';
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    58
    }
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    59
  }
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    60
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    61
#ifndef PRODUCT
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    62
  ~LineBuffer() {
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    63
    assert(_cur == _indent_level * INDENT_CHARS, "pending data in buffer - append_and_print_cr() not called?");
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    64
  }
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    65
#endif
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    66
24424
2658d7834c6e 8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents: 24104
diff changeset
    67
  void append(const char* format, ...)  ATTRIBUTE_PRINTF(2, 3) {
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    68
    va_list ap;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    69
    va_start(ap, format);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    70
    vappend(format, ap);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    71
    va_end(ap);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    72
  }
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    73
24424
2658d7834c6e 8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents: 24104
diff changeset
    74
  void append_and_print_cr(const char* format, ...)  ATTRIBUTE_PRINTF(2, 3) {
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    75
    va_list ap;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    76
    va_start(ap, format);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    77
    vappend(format, ap);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    78
    va_end(ap);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    79
    gclog_or_tty->print_cr("%s", _buffer);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    80
    _cur = _indent_level * INDENT_CHARS;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    81
  }
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    82
};
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
    83
24424
2658d7834c6e 8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents: 24104
diff changeset
    84
PRAGMA_DIAG_PUSH
2658d7834c6e 8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents: 24104
diff changeset
    85
PRAGMA_FORMAT_NONLITERAL_IGNORED
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    86
template <class T>
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    87
void WorkerDataArray<T>::print(int level, const char* title) {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    88
  if (_length == 1) {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    89
    // No need for min, max, average and sum for only one worker
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    90
    LineBuffer buf(level);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    91
    buf.append("[%s:  ", title);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    92
    buf.append(_print_format, _data[0]);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    93
    buf.append_and_print_cr("]");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    94
    return;
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    95
  }
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    96
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    97
  T min = _data[0];
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    98
  T max = _data[0];
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
    99
  T sum = 0;
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   100
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   101
  LineBuffer buf(level);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   102
  buf.append("[%s:", title);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   103
  for (uint i = 0; i < _length; ++i) {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   104
    T val = _data[i];
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   105
    min = MIN2(val, min);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   106
    max = MAX2(val, max);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   107
    sum += val;
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   108
    if (G1Log::finest()) {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   109
      buf.append("  ");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   110
      buf.append(_print_format, val);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   111
    }
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   112
  }
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   113
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   114
  if (G1Log::finest()) {
24424
2658d7834c6e 8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents: 24104
diff changeset
   115
    buf.append_and_print_cr("%s", "");
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   116
  }
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   117
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   118
  double avg = (double)sum / (double)_length;
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   119
  buf.append(" Min: ");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   120
  buf.append(_print_format, min);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   121
  buf.append(", Avg: ");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   122
  buf.append("%.1lf", avg); // Always print average as a double
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   123
  buf.append(", Max: ");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   124
  buf.append(_print_format, max);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   125
  buf.append(", Diff: ");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   126
  buf.append(_print_format, max - min);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   127
  if (_print_sum) {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   128
    // for things like the start and end times the sum is not
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   129
    // that relevant
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   130
    buf.append(", Sum: ");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   131
    buf.append(_print_format, sum);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   132
  }
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   133
  buf.append_and_print_cr("]");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   134
}
24424
2658d7834c6e 8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents: 24104
diff changeset
   135
PRAGMA_DIAG_POP
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   136
13877
7bd7b85d5126 7200615: NPG: optimized VM build is broken
jmasa
parents: 13516
diff changeset
   137
#ifndef PRODUCT
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   138
15238
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   139
template <> const int WorkerDataArray<int>::_uninitialized = -1;
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   140
template <> const double WorkerDataArray<double>::_uninitialized = -1.0;
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   141
template <> const size_t WorkerDataArray<size_t>::_uninitialized = (size_t)-1;
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   142
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   143
template <class T>
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   144
void WorkerDataArray<T>::reset() {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   145
  for (uint i = 0; i < _length; i++) {
15238
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   146
    _data[i] = (T)_uninitialized;
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   147
  }
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   148
}
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   149
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   150
template <class T>
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   151
void WorkerDataArray<T>::verify() {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   152
  for (uint i = 0; i < _length; i++) {
15238
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   153
    assert(_data[i] != _uninitialized,
23858
dae377f5a7c7 8039244: Don't use UINT32_FORMAT and INT32_FORMAT when printing uints and ints in the GC code
stefank
parents: 23855
diff changeset
   154
        err_msg("Invalid data for worker %u, data: %lf, uninitialized: %lf",
15238
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   155
            i, (double)_data[i], (double)_uninitialized));
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   156
  }
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   157
}
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   158
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   159
#endif
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   160
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   161
G1GCPhaseTimes::G1GCPhaseTimes(uint max_gc_threads) :
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   162
  _max_gc_threads(max_gc_threads),
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   163
  _last_gc_worker_start_times_ms(_max_gc_threads, "%.1lf", false),
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   164
  _last_ext_root_scan_times_ms(_max_gc_threads, "%.1lf"),
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   165
  _last_satb_filtering_times_ms(_max_gc_threads, "%.1lf"),
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   166
  _last_update_rs_times_ms(_max_gc_threads, "%.1lf"),
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   167
  _last_update_rs_processed_buffers(_max_gc_threads, "%d"),
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   168
  _last_scan_rs_times_ms(_max_gc_threads, "%.1lf"),
19339
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17327
diff changeset
   169
  _last_strong_code_root_scan_times_ms(_max_gc_threads, "%.1lf"),
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   170
  _last_obj_copy_times_ms(_max_gc_threads, "%.1lf"),
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   171
  _last_termination_times_ms(_max_gc_threads, "%.1lf"),
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   172
  _last_termination_attempts(_max_gc_threads, SIZE_FORMAT),
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   173
  _last_gc_worker_end_times_ms(_max_gc_threads, "%.1lf", false),
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   174
  _last_gc_worker_times_ms(_max_gc_threads, "%.1lf"),
23472
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   175
  _last_gc_worker_other_times_ms(_max_gc_threads, "%.1lf"),
24104
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   176
  _last_redirty_logged_cards_time_ms(_max_gc_threads, "%.1lf"),
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   177
  _last_redirty_logged_cards_processed_cards(_max_gc_threads, SIZE_FORMAT),
23472
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   178
  _cur_string_dedup_queue_fixup_worker_times_ms(_max_gc_threads, "%.1lf"),
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   179
  _cur_string_dedup_table_fixup_worker_times_ms(_max_gc_threads, "%.1lf")
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   180
{
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   181
  assert(max_gc_threads > 0, "Must have some GC threads");
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   182
}
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   183
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   184
void G1GCPhaseTimes::note_gc_start(uint active_gc_threads) {
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   185
  assert(active_gc_threads > 0, "The number of threads must be > 0");
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   186
  assert(active_gc_threads <= _max_gc_threads, "The number of active threads must be <= the max nubmer of threads");
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   187
  _active_gc_threads = active_gc_threads;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   188
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   189
  _last_gc_worker_start_times_ms.reset();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   190
  _last_ext_root_scan_times_ms.reset();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   191
  _last_satb_filtering_times_ms.reset();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   192
  _last_update_rs_times_ms.reset();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   193
  _last_update_rs_processed_buffers.reset();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   194
  _last_scan_rs_times_ms.reset();
19339
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17327
diff changeset
   195
  _last_strong_code_root_scan_times_ms.reset();
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   196
  _last_obj_copy_times_ms.reset();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   197
  _last_termination_times_ms.reset();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   198
  _last_termination_attempts.reset();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   199
  _last_gc_worker_end_times_ms.reset();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   200
  _last_gc_worker_times_ms.reset();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   201
  _last_gc_worker_other_times_ms.reset();
24104
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   202
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   203
  _last_redirty_logged_cards_time_ms.reset();
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   204
  _last_redirty_logged_cards_processed_cards.reset();
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   205
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   206
}
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   207
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   208
void G1GCPhaseTimes::note_gc_end() {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   209
  _last_gc_worker_start_times_ms.verify();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   210
  _last_ext_root_scan_times_ms.verify();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   211
  _last_satb_filtering_times_ms.verify();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   212
  _last_update_rs_times_ms.verify();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   213
  _last_update_rs_processed_buffers.verify();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   214
  _last_scan_rs_times_ms.verify();
19339
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17327
diff changeset
   215
  _last_strong_code_root_scan_times_ms.verify();
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   216
  _last_obj_copy_times_ms.verify();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   217
  _last_termination_times_ms.verify();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   218
  _last_termination_attempts.verify();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   219
  _last_gc_worker_end_times_ms.verify();
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   220
15238
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   221
  for (uint i = 0; i < _active_gc_threads; i++) {
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   222
    double worker_time = _last_gc_worker_end_times_ms.get(i) - _last_gc_worker_start_times_ms.get(i);
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   223
    _last_gc_worker_times_ms.set(i, worker_time);
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   224
15238
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   225
    double worker_known_time = _last_ext_root_scan_times_ms.get(i) +
17327
4bd0581aa231 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents: 15238
diff changeset
   226
                               _last_satb_filtering_times_ms.get(i) +
4bd0581aa231 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents: 15238
diff changeset
   227
                               _last_update_rs_times_ms.get(i) +
4bd0581aa231 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents: 15238
diff changeset
   228
                               _last_scan_rs_times_ms.get(i) +
19339
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17327
diff changeset
   229
                               _last_strong_code_root_scan_times_ms.get(i) +
17327
4bd0581aa231 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents: 15238
diff changeset
   230
                               _last_obj_copy_times_ms.get(i) +
4bd0581aa231 7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap
johnc
parents: 15238
diff changeset
   231
                               _last_termination_times_ms.get(i);
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   232
15238
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   233
    double worker_other_time = worker_time - worker_known_time;
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   234
    _last_gc_worker_other_times_ms.set(i, worker_other_time);
2a5f251cc9ad 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
brutisso
parents: 13877
diff changeset
   235
  }
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   236
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   237
  _last_gc_worker_times_ms.verify();
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   238
  _last_gc_worker_other_times_ms.verify();
24104
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   239
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   240
  _last_redirty_logged_cards_time_ms.verify();
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   241
  _last_redirty_logged_cards_processed_cards.verify();
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   242
}
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   243
23472
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   244
void G1GCPhaseTimes::note_string_dedup_fixup_start() {
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   245
  _cur_string_dedup_queue_fixup_worker_times_ms.reset();
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   246
  _cur_string_dedup_table_fixup_worker_times_ms.reset();
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   247
}
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   248
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   249
void G1GCPhaseTimes::note_string_dedup_fixup_end() {
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   250
  _cur_string_dedup_queue_fixup_worker_times_ms.verify();
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   251
  _cur_string_dedup_table_fixup_worker_times_ms.verify();
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   252
}
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   253
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   254
void G1GCPhaseTimes::print_stats(int level, const char* str, double value) {
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   255
  LineBuffer(level).append_and_print_cr("[%s: %.1lf ms]", str, value);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   256
}
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   257
25889
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   258
void G1GCPhaseTimes::print_stats(int level, const char* str, size_t value) {
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   259
  LineBuffer(level).append_and_print_cr("[%s: "SIZE_FORMAT"]", str, value);
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   260
}
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   261
23855
c4574075402c 8016302: Change type of the number of GC workers to unsigned int (2)
vkempik
parents: 23472
diff changeset
   262
void G1GCPhaseTimes::print_stats(int level, const char* str, double value, uint workers) {
23858
dae377f5a7c7 8039244: Don't use UINT32_FORMAT and INT32_FORMAT when printing uints and ints in the GC code
stefank
parents: 23855
diff changeset
   263
  LineBuffer(level).append_and_print_cr("[%s: %.1lf ms, GC Workers: %u]", str, value, workers);
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   264
}
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   265
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   266
double G1GCPhaseTimes::accounted_time_ms() {
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   267
    // Subtract the root region scanning wait time. It's initialized to
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   268
    // zero at the start of the pause.
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   269
    double misc_time_ms = _root_region_scan_wait_time_ms;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   270
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   271
    misc_time_ms += _cur_collection_par_time_ms;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   272
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   273
    // Now subtract the time taken to fix up roots in generated code
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   274
    misc_time_ms += _cur_collection_code_root_fixup_time_ms;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   275
19339
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17327
diff changeset
   276
    // Strong code root migration time
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17327
diff changeset
   277
    misc_time_ms += _cur_strong_code_root_migration_time_ms;
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17327
diff changeset
   278
23451
ed2b8bb28fed 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents: 19339
diff changeset
   279
    // Strong code root purge time
ed2b8bb28fed 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents: 19339
diff changeset
   280
    misc_time_ms += _cur_strong_code_root_purge_time_ms;
ed2b8bb28fed 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents: 19339
diff changeset
   281
23472
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   282
    if (G1StringDedup::is_enabled()) {
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   283
      // String dedup fixup time
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   284
      misc_time_ms += _cur_string_dedup_fixup_time_ms;
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   285
    }
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   286
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   287
    // Subtract the time taken to clean the card table from the
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   288
    // current value of "other time"
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   289
    misc_time_ms += _cur_clear_ct_time_ms;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   290
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   291
    return misc_time_ms;
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   292
}
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   293
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   294
void G1GCPhaseTimes::print(double pause_time_sec) {
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   295
  if (_root_region_scan_wait_time_ms > 0.0) {
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   296
    print_stats(1, "Root Region Scan Waiting", _root_region_scan_wait_time_ms);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   297
  }
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   298
  if (G1CollectedHeap::use_parallel_gc_threads()) {
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   299
    print_stats(1, "Parallel Time", _cur_collection_par_time_ms, _active_gc_threads);
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   300
    _last_gc_worker_start_times_ms.print(2, "GC Worker Start (ms)");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   301
    _last_ext_root_scan_times_ms.print(2, "Ext Root Scanning (ms)");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   302
    if (_last_satb_filtering_times_ms.sum() > 0.0) {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   303
      _last_satb_filtering_times_ms.print(2, "SATB Filtering (ms)");
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   304
    }
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   305
    _last_update_rs_times_ms.print(2, "Update RS (ms)");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   306
      _last_update_rs_processed_buffers.print(3, "Processed Buffers");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   307
    _last_scan_rs_times_ms.print(2, "Scan RS (ms)");
19339
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17327
diff changeset
   308
    _last_strong_code_root_scan_times_ms.print(2, "Code Root Scanning (ms)");
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   309
    _last_obj_copy_times_ms.print(2, "Object Copy (ms)");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   310
    _last_termination_times_ms.print(2, "Termination (ms)");
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   311
    if (G1Log::finest()) {
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   312
      _last_termination_attempts.print(3, "Termination Attempts");
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   313
    }
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   314
    _last_gc_worker_other_times_ms.print(2, "GC Worker Other (ms)");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   315
    _last_gc_worker_times_ms.print(2, "GC Worker Total (ms)");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   316
    _last_gc_worker_end_times_ms.print(2, "GC Worker End (ms)");
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   317
  } else {
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   318
    _last_ext_root_scan_times_ms.print(1, "Ext Root Scanning (ms)");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   319
    if (_last_satb_filtering_times_ms.sum() > 0.0) {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   320
      _last_satb_filtering_times_ms.print(1, "SATB Filtering (ms)");
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   321
    }
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   322
    _last_update_rs_times_ms.print(1, "Update RS (ms)");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   323
      _last_update_rs_processed_buffers.print(2, "Processed Buffers");
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   324
    _last_scan_rs_times_ms.print(1, "Scan RS (ms)");
19339
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17327
diff changeset
   325
    _last_strong_code_root_scan_times_ms.print(1, "Code Root Scanning (ms)");
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   326
    _last_obj_copy_times_ms.print(1, "Object Copy (ms)");
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   327
  }
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   328
  print_stats(1, "Code Root Fixup", _cur_collection_code_root_fixup_time_ms);
19339
d247781beec7 7145569: G1: optimize nmethods scanning
johnc
parents: 17327
diff changeset
   329
  print_stats(1, "Code Root Migration", _cur_strong_code_root_migration_time_ms);
23451
ed2b8bb28fed 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents: 19339
diff changeset
   330
  print_stats(1, "Code Root Purge", _cur_strong_code_root_purge_time_ms);
23472
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   331
  if (G1StringDedup::is_enabled()) {
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   332
    print_stats(1, "String Dedup Fixup", _cur_string_dedup_fixup_time_ms, _active_gc_threads);
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   333
    _cur_string_dedup_queue_fixup_worker_times_ms.print(2, "Queue Fixup (ms)");
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   334
    _cur_string_dedup_table_fixup_worker_times_ms.print(2, "Table Fixup (ms)");
35e93890ed88 8029075: String deduplication in G1
pliden
parents: 23455
diff changeset
   335
  }
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   336
  print_stats(1, "Clear CT", _cur_clear_ct_time_ms);
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   337
  double misc_time_ms = pause_time_sec * MILLIUNITS - accounted_time_ms();
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   338
  print_stats(1, "Other", misc_time_ms);
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   339
  if (_cur_verify_before_time_ms > 0.0) {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   340
    print_stats(2, "Verify Before", _cur_verify_before_time_ms);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   341
  }
23455
e541bff96524 8035654: Add times for evacuation failure handling in "Other" time
tschatzl
parents: 23454
diff changeset
   342
  if (G1CollectedHeap::heap()->evacuation_failed()) {
e541bff96524 8035654: Add times for evacuation failure handling in "Other" time
tschatzl
parents: 23454
diff changeset
   343
    double evac_fail_handling = _cur_evac_fail_recalc_used + _cur_evac_fail_remove_self_forwards +
e541bff96524 8035654: Add times for evacuation failure handling in "Other" time
tschatzl
parents: 23454
diff changeset
   344
      _cur_evac_fail_restore_remsets;
e541bff96524 8035654: Add times for evacuation failure handling in "Other" time
tschatzl
parents: 23454
diff changeset
   345
    print_stats(2, "Evacuation Failure", evac_fail_handling);
e541bff96524 8035654: Add times for evacuation failure handling in "Other" time
tschatzl
parents: 23454
diff changeset
   346
    if (G1Log::finest()) {
e541bff96524 8035654: Add times for evacuation failure handling in "Other" time
tschatzl
parents: 23454
diff changeset
   347
      print_stats(3, "Recalculate Used", _cur_evac_fail_recalc_used);
e541bff96524 8035654: Add times for evacuation failure handling in "Other" time
tschatzl
parents: 23454
diff changeset
   348
      print_stats(3, "Remove Self Forwards", _cur_evac_fail_remove_self_forwards);
e541bff96524 8035654: Add times for evacuation failure handling in "Other" time
tschatzl
parents: 23454
diff changeset
   349
      print_stats(3, "Restore RemSet", _cur_evac_fail_restore_remsets);
e541bff96524 8035654: Add times for evacuation failure handling in "Other" time
tschatzl
parents: 23454
diff changeset
   350
    }
e541bff96524 8035654: Add times for evacuation failure handling in "Other" time
tschatzl
parents: 23454
diff changeset
   351
  }
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   352
  print_stats(2, "Choose CSet",
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   353
    (_recorded_young_cset_choice_time_ms +
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   354
    _recorded_non_young_cset_choice_time_ms));
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   355
  print_stats(2, "Ref Proc", _cur_ref_proc_time_ms);
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   356
  print_stats(2, "Ref Enq", _cur_ref_enq_time_ms);
23454
13a3b426f64d 8035398: Add card redirty time in "Other" time in G1
tschatzl
parents: 23453
diff changeset
   357
  if (G1DeferredRSUpdate) {
13a3b426f64d 8035398: Add card redirty time in "Other" time in G1
tschatzl
parents: 23453
diff changeset
   358
    print_stats(2, "Redirty Cards", _recorded_redirty_logged_cards_time_ms);
24104
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   359
    if (G1Log::finest()) {
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   360
      _last_redirty_logged_cards_time_ms.print(3, "Parallel Redirty");
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   361
      _last_redirty_logged_cards_processed_cards.print(3, "Redirtied Cards");
febf9363fb68 8019342: G1: High "Other" time most likely due to card redirtying
tschatzl
parents: 23858
diff changeset
   362
    }
23454
13a3b426f64d 8035398: Add card redirty time in "Other" time in G1
tschatzl
parents: 23453
diff changeset
   363
  }
25889
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   364
  if (G1ReclaimDeadHumongousObjectsAtYoungGC) {
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   365
    print_stats(2, "Humongous Reclaim", _cur_fast_reclaim_humongous_time_ms);
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   366
    if (G1Log::finest()) {
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   367
      print_stats(3, "Humongous Total", _cur_fast_reclaim_humongous_total);
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   368
      print_stats(3, "Humongous Candidate", _cur_fast_reclaim_humongous_candidates);
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   369
      print_stats(3, "Humongous Reclaimed", _cur_fast_reclaim_humongous_reclaimed);
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   370
    }
221296ac4359 8027959: Early reclamation of large objects in G1
tschatzl
parents: 25492
diff changeset
   371
  }
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   372
  print_stats(2, "Free CSet",
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   373
    (_recorded_young_free_cset_time_ms +
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   374
    _recorded_non_young_free_cset_time_ms));
23453
09cfb0164acf 8027295: Free CSet takes ~50% of young pause time
tschatzl
parents: 23451
diff changeset
   375
  if (G1Log::finest()) {
09cfb0164acf 8027295: Free CSet takes ~50% of young pause time
tschatzl
parents: 23451
diff changeset
   376
    print_stats(3, "Young Free CSet", _recorded_young_free_cset_time_ms);
09cfb0164acf 8027295: Free CSet takes ~50% of young pause time
tschatzl
parents: 23451
diff changeset
   377
    print_stats(3, "Non-Young Free CSet", _recorded_non_young_free_cset_time_ms);
09cfb0164acf 8027295: Free CSet takes ~50% of young pause time
tschatzl
parents: 23451
diff changeset
   378
  }
13516
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   379
  if (_cur_verify_after_time_ms > 0.0) {
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   380
    print_stats(2, "Verify After", _cur_verify_after_time_ms);
f7adc27fb367 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
brutisso
parents: 13288
diff changeset
   381
  }
13288
331d5b6725f3 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
brutisso
parents:
diff changeset
   382
}