|
1 /* |
|
2 * Copyright (c) 2017, 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 #ifndef SHARE_VM_LEAKPROFILER_UTILITIES_ROOTTYPE_HPP |
|
26 #define SHARE_VM_LEAKPROFILER_UTILITIES_ROOTTYPE_HPP |
|
27 |
|
28 #include "memory/allocation.hpp" |
|
29 #include "utilities/debug.hpp" |
|
30 |
|
31 class OldObjectRoot : public AllStatic { |
|
32 public: |
|
33 enum System { |
|
34 _system_undetermined, |
|
35 _universe, |
|
36 _global_jni_handles, |
|
37 _threads, |
|
38 _object_synchronizer, |
|
39 _system_dictionary, |
|
40 _class_loader_data, |
|
41 _management, |
|
42 _jvmti, |
|
43 _code_cache, |
|
44 _string_table, |
|
45 _aot, |
|
46 _number_of_systems |
|
47 }; |
|
48 |
|
49 enum Type { |
|
50 _type_undetermined, |
|
51 _stack_variable, |
|
52 _local_jni_handle, |
|
53 _global_jni_handle, |
|
54 _handle_area, |
|
55 _number_of_types |
|
56 }; |
|
57 |
|
58 static const char* system_description(System system) { |
|
59 switch (system) { |
|
60 case _system_undetermined: |
|
61 return "<unknown>"; |
|
62 case _universe: |
|
63 return "Universe"; |
|
64 case _global_jni_handles: |
|
65 return "Global JNI Handles"; |
|
66 case _threads: |
|
67 return "Threads"; |
|
68 case _object_synchronizer: |
|
69 return "Object Monitor"; |
|
70 case _system_dictionary: |
|
71 return "System Dictionary"; |
|
72 case _class_loader_data: |
|
73 return "Class Loader Data"; |
|
74 case _management: |
|
75 return "Management"; |
|
76 case _jvmti: |
|
77 return "JVMTI"; |
|
78 case _code_cache: |
|
79 return "Code Cache"; |
|
80 case _string_table: |
|
81 return "String Table"; |
|
82 case _aot: |
|
83 return "AOT"; |
|
84 default: |
|
85 ShouldNotReachHere(); |
|
86 } |
|
87 return NULL; |
|
88 } |
|
89 |
|
90 static const char* type_description(Type type) { |
|
91 switch (type) { |
|
92 case _type_undetermined: |
|
93 return "<unknown>"; |
|
94 case _stack_variable: |
|
95 return "Stack Variable"; |
|
96 case _local_jni_handle: |
|
97 return "Local JNI Handle"; |
|
98 case _global_jni_handle: |
|
99 return "Global JNI Handle"; |
|
100 case _handle_area: |
|
101 return "Handle Area"; |
|
102 default: |
|
103 ShouldNotReachHere(); |
|
104 } |
|
105 return NULL; |
|
106 } |
|
107 }; |
|
108 |
|
109 #endif // SHARE_VM_LEAKPROFILER_UTILITIES_ROOTTYPE_HPP |