comparison src/share/vm/gc_implementation/g1/g1HRPrinter.cpp @ 3778:5f6f2615433a

7049999: G1: Make the G1PrintHeapRegions output consistent and complete Summary: Extend and make more consistent the output from the G1PrintHeapRegions flag. Reviewed-by: johnc, jmasa
author tonyp
date Fri, 24 Jun 2011 12:38:49 -0400
parents
children 78bbf4d43a14
comparison
equal deleted inserted replaced
3777:e8b0b0392037 3778:5f6f2615433a
1 /*
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc_implementation/g1/g1HRPrinter.hpp"
27 #include "gc_implementation/g1/heapRegion.hpp"
28 #include "utilities/ostream.hpp"
29
30 const char* G1HRPrinter::action_name(ActionType action) {
31 switch(action) {
32 case Alloc: return "ALLOC";
33 case AllocForce: return "ALLOC-FORCE";
34 case Retire: return "RETIRE";
35 case Reuse: return "REUSE";
36 case CSet: return "CSET";
37 case EvacFailure: return "EVAC-FAILURE";
38 case Cleanup: return "CLEANUP";
39 case PostCompaction: return "POST-COMPACTION";
40 case Commit: return "COMMIT";
41 case Uncommit: return "UNCOMMIT";
42 default: ShouldNotReachHere();
43 }
44 // trying to keep the Windows compiler happy
45 return NULL;
46 }
47
48 const char* G1HRPrinter::region_type_name(RegionType type) {
49 switch (type) {
50 case Unset: return NULL;
51 case Eden: return "Eden";
52 case Survivor: return "Survivor";
53 case Old: return "Old";
54 case SingleHumongous: return "SingleH";
55 case StartsHumongous: return "StartsH";
56 case ContinuesHumongous: return "ContinuesH";
57 default: ShouldNotReachHere();
58 }
59 // trying to keep the Windows compiler happy
60 return NULL;
61 }
62
63 const char* G1HRPrinter::phase_name(PhaseType phase) {
64 switch (phase) {
65 case StartGC: return "StartGC";
66 case EndGC: return "EndGC";
67 case StartFullGC: return "StartFullGC";
68 case EndFullGC: return "EndFullGC";
69 default: ShouldNotReachHere();
70 }
71 // trying to keep the Windows compiler happy
72 return NULL;
73 }
74
75 #define G1HR_PREFIX " G1HR"
76
77 void G1HRPrinter::print(ActionType action, RegionType type,
78 HeapRegion* hr, HeapWord* top) {
79 const char* action_str = action_name(action);
80 const char* type_str = region_type_name(type);
81 HeapWord* bottom = hr->bottom();
82
83 if (type_str != NULL) {
84 if (top != NULL) {
85 gclog_or_tty->print_cr(G1HR_PREFIX" %s(%s) "PTR_FORMAT" "PTR_FORMAT,
86 action_str, type_str, bottom, top);
87 } else {
88 gclog_or_tty->print_cr(G1HR_PREFIX" %s(%s) "PTR_FORMAT,
89 action_str, type_str, bottom);
90 }
91 } else {
92 if (top != NULL) {
93 gclog_or_tty->print_cr(G1HR_PREFIX" %s "PTR_FORMAT" "PTR_FORMAT,
94 action_str, bottom, top);
95 } else {
96 gclog_or_tty->print_cr(G1HR_PREFIX" %s "PTR_FORMAT,
97 action_str, bottom);
98 }
99 }
100 }
101
102 void G1HRPrinter::print(ActionType action, HeapWord* bottom, HeapWord* end) {
103 const char* action_str = action_name(action);
104
105 gclog_or_tty->print_cr(G1HR_PREFIX" %s ["PTR_FORMAT","PTR_FORMAT"]",
106 action_str, bottom, end);
107 }
108
109 void G1HRPrinter::print(PhaseType phase, size_t phase_num) {
110 const char* phase_str = phase_name(phase);
111 gclog_or_tty->print_cr(G1HR_PREFIX" #%s "SIZE_FORMAT, phase_str, phase_num);
112 }