1/*
2 * Copyright (c) 2014, 2018, 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/g1/g1HeapRegionTraceType.hpp"
27#include "gc/g1/heapRegionType.hpp"
28
29const HeapRegionType HeapRegionType::Eden = HeapRegionType(EdenTag);
30const HeapRegionType HeapRegionType::Survivor = HeapRegionType(SurvTag);
31const HeapRegionType HeapRegionType::Old = HeapRegionType(OldTag);
32const HeapRegionType HeapRegionType::Humongous = HeapRegionType(StartsHumongousTag);
33
34bool HeapRegionType::is_valid(Tag tag) {
35 switch (tag) {
36 case FreeTag:
37 case EdenTag:
38 case SurvTag:
39 case StartsHumongousTag:
40 case ContinuesHumongousTag:
41 case OldTag:
42 case OpenArchiveTag:
43 case ClosedArchiveTag:
44 return true;
45 default:
46 return false;
47 }
48}
49
50const char* HeapRegionType::get_str() const {
51 hrt_assert_is_valid(_tag);
52 switch (_tag) {
53 case FreeTag: return "FREE";
54 case EdenTag: return "EDEN";
55 case SurvTag: return "SURV";
56 case StartsHumongousTag: return "HUMS";
57 case ContinuesHumongousTag: return "HUMC";
58 case OldTag: return "OLD";
59 case OpenArchiveTag: return "OARC";
60 case ClosedArchiveTag: return "CARC";
61 default:
62 ShouldNotReachHere();
63 return NULL; // keep some compilers happy
64 }
65}
66
67const char* HeapRegionType::get_short_str() const {
68 hrt_assert_is_valid(_tag);
69 switch (_tag) {
70 case FreeTag: return "F";
71 case EdenTag: return "E";
72 case SurvTag: return "S";
73 case StartsHumongousTag: return "HS";
74 case ContinuesHumongousTag: return "HC";
75 case OldTag: return "O";
76 case OpenArchiveTag: return "OA";
77 case ClosedArchiveTag: return "CA";
78 default:
79 ShouldNotReachHere();
80 return NULL; // keep some compilers happy
81 }
82}
83
84G1HeapRegionTraceType::Type HeapRegionType::get_trace_type() {
85 hrt_assert_is_valid(_tag);
86 switch (_tag) {
87 case FreeTag: return G1HeapRegionTraceType::Free;
88 case EdenTag: return G1HeapRegionTraceType::Eden;
89 case SurvTag: return G1HeapRegionTraceType::Survivor;
90 case StartsHumongousTag: return G1HeapRegionTraceType::StartsHumongous;
91 case ContinuesHumongousTag: return G1HeapRegionTraceType::ContinuesHumongous;
92 case OldTag: return G1HeapRegionTraceType::Old;
93 case OpenArchiveTag: return G1HeapRegionTraceType::OpenArchive;
94 case ClosedArchiveTag: return G1HeapRegionTraceType::ClosedArchive;
95 default:
96 ShouldNotReachHere();
97 return G1HeapRegionTraceType::Free; // keep some compilers happy
98 }
99}
100