Mercurial > hg > graal-jvmci-8
annotate src/share/vm/gc_implementation/g1/g1ErgoVerbose.hpp @ 4710:41406797186b
7113012: G1: rename not-fully-young GCs as "mixed"
Summary: Renamed partially-young GCs as mixed and fully-young GCs as young. Change all external output that includes those terms (GC log and GC ergo log) as well as any comments, fields, methods, etc. The changeset also includes very minor code tidying up (added some curly brackets).
Reviewed-by: johnc, brutisso
author | tonyp |
---|---|
date | Fri, 16 Dec 2011 02:14:27 -0500 |
parents | f1b4e0e0bdad |
children | a9647476d1a4 |
rev | line source |
---|---|
3914
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
1 /* |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
4 * |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
8 * |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
13 * accompanied this code). |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
14 * |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
18 * |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
21 * questions. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
22 * |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
23 */ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
24 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1ERGOVERBOSE_HPP |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_G1ERGOVERBOSE_HPP |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
27 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
28 #include "memory/allocation.hpp" |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
29 #include "utilities/debug.hpp" |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
30 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
31 // The log of G1's heuristic decisions comprises of a series of |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
32 // records which have a similar format in order to maintain |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
33 // consistency across records and ultimately easier parsing of the |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
34 // output, if we ever choose to do that. Each record consists of: |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
35 // * A time stamp to be able to easily correlate each record with |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
36 // other events. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
37 // * A unique string to allow us to easily identify such records. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
38 // * The name of the heuristic the record corresponds to. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
39 // * An action string which describes the action that G1 did or is |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
40 // about to do. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
41 // * An optional reason string which describes the reason for the |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
42 // action. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
43 // * An optional number of name/value pairs which contributed to the |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
44 // decision to take the action described in the record. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
45 // |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
46 // Each record is associated with a "tag" which is the combination of |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
47 // the heuristic the record corresponds to, as well as the min level |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
48 // of verboseness at which the record should be printed. The tag is |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
49 // checked against the current settings to determine whether the record |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
50 // should be printed or not. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
51 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
52 // The available verboseness levels. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
53 typedef enum { |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
54 // Determine which part of the tag is occupied by the level. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
55 ErgoLevelShift = 8, |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
56 ErgoLevelMask = ~((1 << ErgoLevelShift) - 1), |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
57 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
58 // ErgoLow is 0 so that we don't have to explicitly or a heuristic |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
59 // id with ErgoLow to keep its use simpler. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
60 ErgoLow = 0, |
3927
f1b4e0e0bdad
7089625: G1: policy for how many old regions to add to the CSet (when young gen is fixed) is broken
tonyp
parents:
3914
diff
changeset
|
61 ErgoHigh = 1 << ErgoLevelShift |
3914
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
62 } ErgoLevel; |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
63 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
64 // The available heuristics. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
65 typedef enum { |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
66 // Determines which part of the tag is occupied by the heuristic id. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
67 ErgoHeuristicMask = ~ErgoLevelMask, |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
68 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
69 ErgoHeapSizing = 0, |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
70 ErgoCSetConstruction, |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
71 ErgoConcCycles, |
4710 | 72 ErgoMixedGCs, |
3914
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
73 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
74 ErgoHeuristicNum |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
75 } ErgoHeuristic; |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
76 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
77 class G1ErgoVerbose : AllStatic { |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
78 private: |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
79 // Determines the minimum verboseness level at which records will be |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
80 // printed. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
81 static ErgoLevel _level; |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
82 // Determines which heuristics are currently enabled. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
83 static bool _enabled[ErgoHeuristicNum]; |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
84 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
85 static ErgoLevel extract_level(int tag) { |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
86 return (ErgoLevel) (tag & ErgoLevelMask); |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
87 } |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
88 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
89 static ErgoHeuristic extract_heuristic(int tag) { |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
90 return (ErgoHeuristic) (tag & ErgoHeuristicMask); |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
91 } |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
92 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
93 public: |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
94 // Needs to be explicitly called at GC initialization. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
95 static void initialize(); |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
96 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
97 static void set_level(ErgoLevel level); |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
98 static void set_enabled(ErgoHeuristic h, bool enabled); |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
99 // It is applied to all heuristics. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
100 static void set_enabled(bool enabled); |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
101 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
102 static bool enabled(int tag) { |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
103 ErgoLevel level = extract_level(tag); |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
104 ErgoHeuristic n = extract_heuristic(tag); |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
105 return level <= _level && _enabled[n]; |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
106 } |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
107 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
108 // Extract the heuristic id from the tag and return a string with |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
109 // its name. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
110 static const char* to_string(int tag); |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
111 }; |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
112 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
113 // The macros below generate the format string for values of different |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
114 // types and/or metrics. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
115 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
116 // The reason for the action is optional and is handled specially: the |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
117 // reason string is concatenated here so it's not necessary to pass it |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
118 // as a parameter. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
119 #define ergo_format_reason(_reason_) ", reason: " _reason_ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
120 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
121 // Single parameter format strings |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
122 #define ergo_format_str(_name_) ", " _name_ ": %s" |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
123 #define ergo_format_region(_name_) ", " _name_ ": "SIZE_FORMAT" regions" |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
124 #define ergo_format_byte(_name_) ", " _name_ ": "SIZE_FORMAT" bytes" |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
125 #define ergo_format_double(_name_) ", " _name_ ": %1.2f" |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
126 #define ergo_format_perc(_name_) ", " _name_ ": %1.2f %%" |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
127 #define ergo_format_ms(_name_) ", " _name_ ": %1.2f ms" |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
128 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
129 // Double parameter format strings |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
130 #define ergo_format_byte_perc(_name_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
131 ", " _name_ ": "SIZE_FORMAT" bytes (%1.2f %%)" |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
132 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
133 // Generates the format string |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
134 #define ergo_format(_action_, _extra_format_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
135 " %1.3f: [G1Ergonomics (%s) " _action_ _extra_format_ "]" |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
136 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
137 // Conditionally, prints an ergonomic decision record. _extra_format_ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
138 // is the format string for the optional items we'd like to print |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
139 // (i.e., the decision's reason and any associated values). This |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
140 // string should be built up using the ergo_*_format macros (see |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
141 // above) to ensure consistency. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
142 // |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
143 // Since we cannot rely on the compiler supporting variable argument |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
144 // macros, this macro accepts a fixed number of arguments and passes |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
145 // them to the print method. For convenience, we have wrapper macros |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
146 // below which take a specific number of arguments and set the rest to |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
147 // a default value. |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
148 #define ergo_verbose_common(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
149 _arg0_, _arg1_, _arg2_, _arg3_, _arg4_, _arg5_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
150 do { \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
151 if (G1ErgoVerbose::enabled((_tag_))) { \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
152 gclog_or_tty->print_cr(ergo_format(_action_, _extra_format_), \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
153 os::elapsedTime(), \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
154 G1ErgoVerbose::to_string((_tag_)), \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
155 (_arg0_), (_arg1_), (_arg2_), \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
156 (_arg3_), (_arg4_), (_arg5_)); \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
157 } \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
158 } while (0) |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
159 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
160 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
161 #define ergo_verbose(_tag_, _action_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
162 ergo_verbose_common(_tag_, _action_, "", 0, 0, 0, 0, 0, 0) |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
163 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
164 #define ergo_verbose0(_tag_, _action_, _extra_format_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
165 ergo_verbose_common(_tag_, _action_, _extra_format_, 0, 0, 0, 0, 0, 0) |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
166 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
167 #define ergo_verbose1(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
168 _arg0_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
169 ergo_verbose_common(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
170 _arg0_, 0, 0, 0, 0, 0) |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
171 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
172 #define ergo_verbose2(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
173 _arg0_, _arg1_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
174 ergo_verbose_common(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
175 _arg0_, _arg1_, 0, 0, 0, 0) |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
176 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
177 #define ergo_verbose3(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
178 _arg0_, _arg1_, _arg2_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
179 ergo_verbose_common(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
180 _arg0_, _arg1_, _arg2_, 0, 0, 0) |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
181 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
182 #define ergo_verbose4(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
183 _arg0_, _arg1_, _arg2_, _arg3_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
184 ergo_verbose_common(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
185 _arg0_, _arg1_, _arg2_, _arg3_, 0, 0) |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
186 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
187 #define ergo_verbose5(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
188 _arg0_, _arg1_, _arg2_, _arg3_, _arg4_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
189 ergo_verbose_common(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
190 _arg0_, _arg1_, _arg2_, _arg3_, _arg4_, 0) |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
191 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
192 #define ergo_verbose6(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
193 _arg0_, _arg1_, _arg2_, _arg3_, _arg4_, _arg5_) \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
194 ergo_verbose_common(_tag_, _action_, _extra_format_, \ |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
195 _arg0_, _arg1_, _arg2_, _arg3_, _arg4_, _arg5_) |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
196 |
20213c8a3c40
7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions
tonyp
parents:
diff
changeset
|
197 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1ERGOVERBOSE_HPP |