src/hotspot/share/logging/logPrefix.hpp
author tschatzl
Mon, 26 Mar 2018 16:51:43 +0200
changeset 49607 acffe6ff3ae7
parent 47216 71c04702a3d5
child 50525 767cdb97f103
permissions -rw-r--r--
8180415: Rebuild remembered sets during the concurrent cycle Summary: In general maintain remembered sets of old regions only from the start of the concurrent cycle to the mixed gc they are used, at most until the end of the mixed phase. Reviewed-by: sjohanss, sangheki
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33097
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
     1
/*
49607
acffe6ff3ae7 8180415: Rebuild remembered sets during the concurrent cycle
tschatzl
parents: 47216
diff changeset
     2
 * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
33097
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
     4
 *
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
     7
 * published by the Free Software Foundation.
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
     8
 *
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    13
 * accompanied this code).
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    14
 *
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    18
 *
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    21
 * questions.
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    22
 *
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    23
 */
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    24
#ifndef SHARE_VM_LOGGING_LOGPREFIX_HPP
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    25
#define SHARE_VM_LOGGING_LOGPREFIX_HPP
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    26
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    27
#include "gc/shared/gcId.hpp"
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    28
#include "logging/logTag.hpp"
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    29
34138
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
    30
// Prefixes prepend each log message for a specified tagset with a given prefix.
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
    31
// These prefixes are written before the log message but after the log decorations.
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
    32
//
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
    33
// A prefix is defined as a function that takes a buffer (with some size) as argument.
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
    34
// This function will be called for each log message, and should write the prefix
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
    35
// to the given buffer. The function should return how many characters it wrote,
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
    36
// which should never exceed the given size.
33097
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    37
//
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    38
// List of prefixes for specific tags and/or tagsets.
34138
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
    39
// Syntax: LOG_PREFIX(<name of prefixer function>, LOG_TAGS(<chosen log tags>))
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
    40
// Where the prefixer function matches the following signature: size_t (*)(char*, size_t)
37201
928cf689af1a 8151993: Remove inclusion of inline.hpp in log.hpp
mlarsson
parents: 37171
diff changeset
    41
928cf689af1a 8151993: Remove inclusion of inline.hpp in log.hpp
mlarsson
parents: 37171
diff changeset
    42
// Prefix function for internal vm test
928cf689af1a 8151993: Remove inclusion of inline.hpp in log.hpp
mlarsson
parents: 37171
diff changeset
    43
DEBUG_ONLY(size_t Test_log_prefix_prefixer(char* buf, size_t len);)
928cf689af1a 8151993: Remove inclusion of inline.hpp in log.hpp
mlarsson
parents: 37171
diff changeset
    44
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    45
#define LOG_PREFIX_LIST \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    46
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    47
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, age)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    48
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, alloc)) \
37171
b968bbc6291c 8152300: Convert G1_ALLOC_REGION_TRACING to unified logging
brutisso
parents: 37146
diff changeset
    49
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, alloc, region)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    50
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, barrier)) \
35939
05df7e64ecfc 8149035: Make the full_gc_dump() calls be recorded as part of the GC
brutisso
parents: 35061
diff changeset
    51
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, classhisto)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    52
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, compaction)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    53
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, cpu)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    54
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    55
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo, cset)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    56
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo, heap)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    57
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo, ihop)) \
37510
cf066fe4531b 8133051: Concurrent refinement threads may be activated and deactivated at random
kbarrett
parents: 37229
diff changeset
    58
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo, refine)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    59
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, heap)) \
37085
53ccf09a724f 8151696: Print all regions on trace level to get same behavior as old PrintHeapAtGCExtended
sjohanss
parents: 36374
diff changeset
    60
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, heap, region)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    61
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, freelist)) \
37229
fb86c6db7f7b 8153182: GC ID prefix for gc, humongous log messages are missing
tschatzl
parents: 37225
diff changeset
    62
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, humongous)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    63
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ihop)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    64
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, liveness)) \
37123
bf4f064a10a8 8151614: Improve logging in concurrent mark code
tschatzl
parents: 37085
diff changeset
    65
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, marking)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    66
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, metaspace)) \
38128
22391eb0c22d 8155245: Add logging when MMU target is violated
sjohanss
parents: 37510
diff changeset
    67
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, mmu)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    68
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, phases)) \
46795
623a5e42deb6 8173335: Improve logging for j.l.ref.reference processing
sangheki
parents: 39703
diff changeset
    69
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, phases, ref)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    70
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, phases, start)) \
36374
613f27cc37b9 8150068: Log the main G1 phases at info level
brutisso
parents: 35939
diff changeset
    71
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, phases, task)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    72
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, plab)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    73
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, region)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    74
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, remset)) \
49607
acffe6ff3ae7 8180415: Rebuild remembered sets during the concurrent cycle
tschatzl
parents: 47216
diff changeset
    75
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, remset, tracking)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    76
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ref)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    77
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ref, start)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    78
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, start)) \
39703
66722c5bc87a 8159893: StringTable cleaning log line lacks the GC ID prefix
stefank
parents: 38263
diff changeset
    79
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, stringtable)) \
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    80
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, sweep)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    81
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    82
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, start)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    83
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, stats)) \
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    84
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, task, time)) \
37201
928cf689af1a 8151993: Remove inclusion of inline.hpp in log.hpp
mlarsson
parents: 37171
diff changeset
    85
  DEBUG_ONLY(LOG_PREFIX(Test_log_prefix_prefixer, LOG_TAGS(logging, test))) \
37225
ac6c704f9a8c 8153187: Convert TraceWorkGang to use unified logging
brutisso
parents: 37201
diff changeset
    86
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, tlab)) \
ac6c704f9a8c 8153187: Convert TraceWorkGang to use unified logging
brutisso
parents: 37201
diff changeset
    87
  LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, workgang))
35061
be6025ebffea 8145092: Use Unified Logging for the GC logging
brutisso
parents: 34138
diff changeset
    88
33097
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    89
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    90
// The empty prefix, used when there's no prefix defined.
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    91
template <LogTagType T0, LogTagType T1, LogTagType T2, LogTagType T3, LogTagType T4, LogTagType GuardTag = LogTag::__NO_TAG>
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    92
struct LogPrefix : public AllStatic {
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    93
  STATIC_ASSERT(GuardTag == LogTag::__NO_TAG);
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    94
  static size_t prefix(char* buf, size_t len) {
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    95
    return 0;
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    96
  }
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    97
};
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
    98
34138
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
    99
#define LOG_PREFIX(fn, ...) \
33097
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
   100
template <> struct LogPrefix<__VA_ARGS__> { \
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
   101
  static size_t prefix(char* buf, size_t len) { \
34138
c5c8a684fd85 8142482: Improve the support for prefix functions in unified logging
mlarsson
parents: 33111
diff changeset
   102
    size_t ret = fn(buf, len); \
38263
a7488329ad27 8145934: Make ttyLocker equivalent for Unified Logging framework
mlarsson
parents: 38128
diff changeset
   103
    /* Either prefix did fit (strlen(buf) == ret && ret < len) */ \
a7488329ad27 8145934: Make ttyLocker equivalent for Unified Logging framework
mlarsson
parents: 38128
diff changeset
   104
    /* or the prefix didn't fit in buffer (ret > len && strlen(buf) < len) */ \
a7488329ad27 8145934: Make ttyLocker equivalent for Unified Logging framework
mlarsson
parents: 38128
diff changeset
   105
    assert(ret == 0 || strlen(buf) < len, \
a7488329ad27 8145934: Make ttyLocker equivalent for Unified Logging framework
mlarsson
parents: 38128
diff changeset
   106
           "Buffer overrun by prefix function."); \
a7488329ad27 8145934: Make ttyLocker equivalent for Unified Logging framework
mlarsson
parents: 38128
diff changeset
   107
    assert(ret == 0 || strlen(buf) == ret || ret >= len, \
a7488329ad27 8145934: Make ttyLocker equivalent for Unified Logging framework
mlarsson
parents: 38128
diff changeset
   108
           "Prefix function should return length of prefix written," \
a7488329ad27 8145934: Make ttyLocker equivalent for Unified Logging framework
mlarsson
parents: 38128
diff changeset
   109
           " or the intended length of prefix if the buffer was too small."); \
33097
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
   110
    return ret; \
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
   111
  } \
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
   112
};
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
   113
LOG_PREFIX_LIST
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
   114
#undef LOG_PREFIX
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
   115
96e348cb0442 8046148: JEP 158: Unified JVM Logging
mlarsson
parents:
diff changeset
   116
#endif // SHARE_VM_LOGGING_LOGPREFIX_HPP