annotate src/share/vm/services/jmm.h @ 8733:9def4075da6d

8008079: G1: Add nextObject routine to CMBitMapRO and replace nextWord Summary: Update the task local finger to the start of the next object when marking aborts, in order to avoid the redundant scanning of all 0's when the marking task restarts, if otherwise updating to the next word. In addition, reuse the routine nextObject() in routine iterate(). Reviewed-by: johnc, ysr Contributed-by: tamao <tao.mao@oracle.com>
author tamao
date Tue, 05 Mar 2013 15:36:56 -0800
parents 3b688d6ff3d0
children 31a4e55f8c9d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
7 * published by the Free Software Foundation. Oracle designates this
0
a61af66fc99e Initial load
duke
parents:
diff changeset
8 * particular file as subject to the "Classpath" exception as provided
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
9 * by Oracle in the LICENSE file that accompanied this code.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10 *
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
14 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
16 *
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
18 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
20 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
22 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
23 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
24 */
a61af66fc99e Initial load
duke
parents:
diff changeset
25
a61af66fc99e Initial load
duke
parents:
diff changeset
26 #ifndef _JAVA_JMM_H_
a61af66fc99e Initial load
duke
parents:
diff changeset
27 #define _JAVA_JMM_H_
a61af66fc99e Initial load
duke
parents:
diff changeset
28
a61af66fc99e Initial load
duke
parents:
diff changeset
29 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
30 * This is a private interface used by JDK for JVM monitoring
a61af66fc99e Initial load
duke
parents:
diff changeset
31 * and management.
a61af66fc99e Initial load
duke
parents:
diff changeset
32 *
a61af66fc99e Initial load
duke
parents:
diff changeset
33 * Bump the version number when either of the following happens:
a61af66fc99e Initial load
duke
parents:
diff changeset
34 *
a61af66fc99e Initial load
duke
parents:
diff changeset
35 * 1. There is a change in functions in JmmInterface.
a61af66fc99e Initial load
duke
parents:
diff changeset
36 *
a61af66fc99e Initial load
duke
parents:
diff changeset
37 * 2. There is a change in the contract between VM and Java classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
38 */
a61af66fc99e Initial load
duke
parents:
diff changeset
39
a61af66fc99e Initial load
duke
parents:
diff changeset
40 #include "jni.h"
a61af66fc99e Initial load
duke
parents:
diff changeset
41
a61af66fc99e Initial load
duke
parents:
diff changeset
42 #ifdef __cplusplus
a61af66fc99e Initial load
duke
parents:
diff changeset
43 extern "C" {
a61af66fc99e Initial load
duke
parents:
diff changeset
44 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
45
a61af66fc99e Initial load
duke
parents:
diff changeset
46 enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
47 JMM_VERSION_1 = 0x20010000,
a61af66fc99e Initial load
duke
parents:
diff changeset
48 JMM_VERSION_1_0 = 0x20010000,
a61af66fc99e Initial load
duke
parents:
diff changeset
49 JMM_VERSION_1_1 = 0x20010100, // JDK 6
a61af66fc99e Initial load
duke
parents:
diff changeset
50 JMM_VERSION_1_2 = 0x20010200, // JDK 7
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
51 JMM_VERSION_1_2_1 = 0x20010201, // JDK 7 GA
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
52 JMM_VERSION = 0x20010202
0
a61af66fc99e Initial load
duke
parents:
diff changeset
53 };
a61af66fc99e Initial load
duke
parents:
diff changeset
54
a61af66fc99e Initial load
duke
parents:
diff changeset
55 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
56 unsigned int isLowMemoryDetectionSupported : 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
57 unsigned int isCompilationTimeMonitoringSupported : 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
58 unsigned int isThreadContentionMonitoringSupported : 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
59 unsigned int isCurrentThreadCpuTimeSupported : 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
60 unsigned int isOtherThreadCpuTimeSupported : 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
61 unsigned int isBootClassPathSupported : 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
62 unsigned int isObjectMonitorUsageSupported : 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
63 unsigned int isSynchronizerUsageSupported : 1;
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
64 unsigned int isThreadAllocatedMemorySupported : 1;
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
65 unsigned int : 23;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
66 } jmmOptionalSupport;
a61af66fc99e Initial load
duke
parents:
diff changeset
67
a61af66fc99e Initial load
duke
parents:
diff changeset
68 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
69 JMM_CLASS_LOADED_COUNT = 1, /* Total number of loaded classes */
a61af66fc99e Initial load
duke
parents:
diff changeset
70 JMM_CLASS_UNLOADED_COUNT = 2, /* Total number of unloaded classes */
a61af66fc99e Initial load
duke
parents:
diff changeset
71 JMM_THREAD_TOTAL_COUNT = 3, /* Total number of threads that have been started */
a61af66fc99e Initial load
duke
parents:
diff changeset
72 JMM_THREAD_LIVE_COUNT = 4, /* Current number of live threads */
a61af66fc99e Initial load
duke
parents:
diff changeset
73 JMM_THREAD_PEAK_COUNT = 5, /* Peak number of live threads */
a61af66fc99e Initial load
duke
parents:
diff changeset
74 JMM_THREAD_DAEMON_COUNT = 6, /* Current number of daemon threads */
a61af66fc99e Initial load
duke
parents:
diff changeset
75 JMM_JVM_INIT_DONE_TIME_MS = 7, /* Time when the JVM finished initialization */
a61af66fc99e Initial load
duke
parents:
diff changeset
76 JMM_COMPILE_TOTAL_TIME_MS = 8, /* Total accumulated time spent in compilation */
a61af66fc99e Initial load
duke
parents:
diff changeset
77 JMM_GC_TIME_MS = 9, /* Total accumulated time spent in collection */
a61af66fc99e Initial load
duke
parents:
diff changeset
78 JMM_GC_COUNT = 10, /* Total number of collections */
a61af66fc99e Initial load
duke
parents:
diff changeset
79
a61af66fc99e Initial load
duke
parents:
diff changeset
80 JMM_INTERNAL_ATTRIBUTE_INDEX = 100,
a61af66fc99e Initial load
duke
parents:
diff changeset
81 JMM_CLASS_LOADED_BYTES = 101, /* Number of bytes loaded instance classes */
a61af66fc99e Initial load
duke
parents:
diff changeset
82 JMM_CLASS_UNLOADED_BYTES = 102, /* Number of bytes unloaded instance classes */
a61af66fc99e Initial load
duke
parents:
diff changeset
83 JMM_TOTAL_CLASSLOAD_TIME_MS = 103, /* Accumulated VM class loader time (TraceClassLoadingTime) */
a61af66fc99e Initial load
duke
parents:
diff changeset
84 JMM_VM_GLOBAL_COUNT = 104, /* Number of VM internal flags */
a61af66fc99e Initial load
duke
parents:
diff changeset
85 JMM_SAFEPOINT_COUNT = 105, /* Total number of safepoints */
a61af66fc99e Initial load
duke
parents:
diff changeset
86 JMM_TOTAL_SAFEPOINTSYNC_TIME_MS = 106, /* Accumulated time spent getting to safepoints */
a61af66fc99e Initial load
duke
parents:
diff changeset
87 JMM_TOTAL_STOPPED_TIME_MS = 107, /* Accumulated time spent at safepoints */
a61af66fc99e Initial load
duke
parents:
diff changeset
88 JMM_TOTAL_APP_TIME_MS = 108, /* Accumulated time spent in Java application */
a61af66fc99e Initial load
duke
parents:
diff changeset
89 JMM_VM_THREAD_COUNT = 109, /* Current number of VM internal threads */
a61af66fc99e Initial load
duke
parents:
diff changeset
90 JMM_CLASS_INIT_TOTAL_COUNT = 110, /* Number of classes for which initializers were run */
a61af66fc99e Initial load
duke
parents:
diff changeset
91 JMM_CLASS_INIT_TOTAL_TIME_MS = 111, /* Accumulated time spent in class initializers */
a61af66fc99e Initial load
duke
parents:
diff changeset
92 JMM_METHOD_DATA_SIZE_BYTES = 112, /* Size of method data in memory */
a61af66fc99e Initial load
duke
parents:
diff changeset
93 JMM_CLASS_VERIFY_TOTAL_TIME_MS = 113, /* Accumulated time spent in class verifier */
a61af66fc99e Initial load
duke
parents:
diff changeset
94 JMM_SHARED_CLASS_LOADED_COUNT = 114, /* Number of shared classes loaded */
a61af66fc99e Initial load
duke
parents:
diff changeset
95 JMM_SHARED_CLASS_UNLOADED_COUNT = 115, /* Number of shared classes unloaded */
a61af66fc99e Initial load
duke
parents:
diff changeset
96 JMM_SHARED_CLASS_LOADED_BYTES = 116, /* Number of bytes loaded shared classes */
a61af66fc99e Initial load
duke
parents:
diff changeset
97 JMM_SHARED_CLASS_UNLOADED_BYTES = 117, /* Number of bytes unloaded shared classes */
a61af66fc99e Initial load
duke
parents:
diff changeset
98
a61af66fc99e Initial load
duke
parents:
diff changeset
99 JMM_OS_ATTRIBUTE_INDEX = 200,
a61af66fc99e Initial load
duke
parents:
diff changeset
100 JMM_OS_PROCESS_ID = 201, /* Process id of the JVM */
a61af66fc99e Initial load
duke
parents:
diff changeset
101 JMM_OS_MEM_TOTAL_PHYSICAL_BYTES = 202, /* Physical memory size */
a61af66fc99e Initial load
duke
parents:
diff changeset
102
a61af66fc99e Initial load
duke
parents:
diff changeset
103 JMM_GC_EXT_ATTRIBUTE_INFO_SIZE = 401 /* the size of the GC specific attributes for a given GC memory manager */
a61af66fc99e Initial load
duke
parents:
diff changeset
104 } jmmLongAttribute;
a61af66fc99e Initial load
duke
parents:
diff changeset
105
a61af66fc99e Initial load
duke
parents:
diff changeset
106 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
107 JMM_VERBOSE_GC = 21,
a61af66fc99e Initial load
duke
parents:
diff changeset
108 JMM_VERBOSE_CLASS = 22,
a61af66fc99e Initial load
duke
parents:
diff changeset
109 JMM_THREAD_CONTENTION_MONITORING = 23,
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
110 JMM_THREAD_CPU_TIME = 24,
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
111 JMM_THREAD_ALLOCATED_MEMORY = 25
0
a61af66fc99e Initial load
duke
parents:
diff changeset
112 } jmmBoolAttribute;
a61af66fc99e Initial load
duke
parents:
diff changeset
113
a61af66fc99e Initial load
duke
parents:
diff changeset
114
a61af66fc99e Initial load
duke
parents:
diff changeset
115 enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
116 JMM_THREAD_STATE_FLAG_SUSPENDED = 0x00100000,
a61af66fc99e Initial load
duke
parents:
diff changeset
117 JMM_THREAD_STATE_FLAG_NATIVE = 0x00400000
a61af66fc99e Initial load
duke
parents:
diff changeset
118 };
a61af66fc99e Initial load
duke
parents:
diff changeset
119
a61af66fc99e Initial load
duke
parents:
diff changeset
120 #define JMM_THREAD_STATE_FLAG_MASK 0xFFF00000
a61af66fc99e Initial load
duke
parents:
diff changeset
121
a61af66fc99e Initial load
duke
parents:
diff changeset
122 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
123 JMM_STAT_PEAK_THREAD_COUNT = 801,
a61af66fc99e Initial load
duke
parents:
diff changeset
124 JMM_STAT_THREAD_CONTENTION_COUNT = 802,
a61af66fc99e Initial load
duke
parents:
diff changeset
125 JMM_STAT_THREAD_CONTENTION_TIME = 803,
a61af66fc99e Initial load
duke
parents:
diff changeset
126 JMM_STAT_THREAD_CONTENTION_STAT = 804,
a61af66fc99e Initial load
duke
parents:
diff changeset
127 JMM_STAT_PEAK_POOL_USAGE = 805,
a61af66fc99e Initial load
duke
parents:
diff changeset
128 JMM_STAT_GC_STAT = 806
a61af66fc99e Initial load
duke
parents:
diff changeset
129 } jmmStatisticType;
a61af66fc99e Initial load
duke
parents:
diff changeset
130
a61af66fc99e Initial load
duke
parents:
diff changeset
131 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
132 JMM_USAGE_THRESHOLD_HIGH = 901,
a61af66fc99e Initial load
duke
parents:
diff changeset
133 JMM_USAGE_THRESHOLD_LOW = 902,
a61af66fc99e Initial load
duke
parents:
diff changeset
134 JMM_COLLECTION_USAGE_THRESHOLD_HIGH = 903,
a61af66fc99e Initial load
duke
parents:
diff changeset
135 JMM_COLLECTION_USAGE_THRESHOLD_LOW = 904
a61af66fc99e Initial load
duke
parents:
diff changeset
136 } jmmThresholdType;
a61af66fc99e Initial load
duke
parents:
diff changeset
137
a61af66fc99e Initial load
duke
parents:
diff changeset
138 /* Should match what is allowed in globals.hpp */
a61af66fc99e Initial load
duke
parents:
diff changeset
139 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
140 JMM_VMGLOBAL_TYPE_UNKNOWN = 0,
a61af66fc99e Initial load
duke
parents:
diff changeset
141 JMM_VMGLOBAL_TYPE_JBOOLEAN = 1,
a61af66fc99e Initial load
duke
parents:
diff changeset
142 JMM_VMGLOBAL_TYPE_JSTRING = 2,
a61af66fc99e Initial load
duke
parents:
diff changeset
143 JMM_VMGLOBAL_TYPE_JLONG = 3
a61af66fc99e Initial load
duke
parents:
diff changeset
144 } jmmVMGlobalType;
a61af66fc99e Initial load
duke
parents:
diff changeset
145
a61af66fc99e Initial load
duke
parents:
diff changeset
146 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
147 JMM_VMGLOBAL_ORIGIN_DEFAULT = 1, /* Default value */
a61af66fc99e Initial load
duke
parents:
diff changeset
148 JMM_VMGLOBAL_ORIGIN_COMMAND_LINE = 2, /* Set at command line (or JNI invocation) */
a61af66fc99e Initial load
duke
parents:
diff changeset
149 JMM_VMGLOBAL_ORIGIN_MANAGEMENT = 3, /* Set via management interface */
a61af66fc99e Initial load
duke
parents:
diff changeset
150 JMM_VMGLOBAL_ORIGIN_ENVIRON_VAR = 4, /* Set via environment variables */
a61af66fc99e Initial load
duke
parents:
diff changeset
151 JMM_VMGLOBAL_ORIGIN_CONFIG_FILE = 5, /* Set via config file (such as .hotspotrc) */
a61af66fc99e Initial load
duke
parents:
diff changeset
152 JMM_VMGLOBAL_ORIGIN_ERGONOMIC = 6, /* Set via ergonomic */
a61af66fc99e Initial load
duke
parents:
diff changeset
153 JMM_VMGLOBAL_ORIGIN_OTHER = 99 /* Set via some other mechanism */
a61af66fc99e Initial load
duke
parents:
diff changeset
154 } jmmVMGlobalOrigin;
a61af66fc99e Initial load
duke
parents:
diff changeset
155
a61af66fc99e Initial load
duke
parents:
diff changeset
156 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
157 jstring name;
a61af66fc99e Initial load
duke
parents:
diff changeset
158 jvalue value;
a61af66fc99e Initial load
duke
parents:
diff changeset
159 jmmVMGlobalType type; /* Data type */
a61af66fc99e Initial load
duke
parents:
diff changeset
160 jmmVMGlobalOrigin origin; /* Default or non-default value */
a61af66fc99e Initial load
duke
parents:
diff changeset
161 unsigned int writeable : 1; /* dynamically writeable */
a61af66fc99e Initial load
duke
parents:
diff changeset
162 unsigned int external : 1; /* external supported interface */
a61af66fc99e Initial load
duke
parents:
diff changeset
163 unsigned int reserved : 30;
a61af66fc99e Initial load
duke
parents:
diff changeset
164 void *reserved1;
a61af66fc99e Initial load
duke
parents:
diff changeset
165 void *reserved2;
a61af66fc99e Initial load
duke
parents:
diff changeset
166 } jmmVMGlobal;
a61af66fc99e Initial load
duke
parents:
diff changeset
167
a61af66fc99e Initial load
duke
parents:
diff changeset
168 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
169 const char* name;
a61af66fc99e Initial load
duke
parents:
diff changeset
170 char type;
a61af66fc99e Initial load
duke
parents:
diff changeset
171 const char* description;
a61af66fc99e Initial load
duke
parents:
diff changeset
172 } jmmExtAttributeInfo;
a61af66fc99e Initial load
duke
parents:
diff changeset
173
a61af66fc99e Initial load
duke
parents:
diff changeset
174 /* Caller has to set the following fields before calling GetLastGCStat
a61af66fc99e Initial load
duke
parents:
diff changeset
175 * o usage_before_gc - array of MemoryUsage objects
a61af66fc99e Initial load
duke
parents:
diff changeset
176 * o usage_after_gc - array of MemoryUsage objects
a61af66fc99e Initial load
duke
parents:
diff changeset
177 * o gc_ext_attribute_values_size - size of gc_ext_atttribute_values array
a61af66fc99e Initial load
duke
parents:
diff changeset
178 * o gc_ext_attribtue_values - array of jvalues
a61af66fc99e Initial load
duke
parents:
diff changeset
179 */
a61af66fc99e Initial load
duke
parents:
diff changeset
180 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
181 jlong gc_index; /* Index of the collections */
a61af66fc99e Initial load
duke
parents:
diff changeset
182 jlong start_time; /* Start time of the GC */
a61af66fc99e Initial load
duke
parents:
diff changeset
183 jlong end_time; /* End time of the GC */
a61af66fc99e Initial load
duke
parents:
diff changeset
184 jobjectArray usage_before_gc; /* Memory usage array before GC */
a61af66fc99e Initial load
duke
parents:
diff changeset
185 jobjectArray usage_after_gc; /* Memory usage array after GC */
a61af66fc99e Initial load
duke
parents:
diff changeset
186 jint gc_ext_attribute_values_size; /* set by the caller of GetGCStat */
a61af66fc99e Initial load
duke
parents:
diff changeset
187 jvalue* gc_ext_attribute_values; /* Array of jvalue for GC extension attributes */
a61af66fc99e Initial load
duke
parents:
diff changeset
188 jint num_gc_ext_attributes; /* number of GC extension attribute values s are filled */
a61af66fc99e Initial load
duke
parents:
diff changeset
189 /* -1 indicates gc_ext_attribute_values is not big enough */
a61af66fc99e Initial load
duke
parents:
diff changeset
190 } jmmGCStat;
a61af66fc99e Initial load
duke
parents:
diff changeset
191
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
192 typedef struct {
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
193 const char* name;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
194 const char* description;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
195 const char* impact;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
196 int num_arguments;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
197 jboolean enabled;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
198 } dcmdInfo;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
199
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
200 typedef struct {
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
201 const char* name;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
202 const char* description;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
203 const char* type;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
204 const char* default_string;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
205 jboolean mandatory;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
206 jboolean option;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
207 int position;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
208 } dcmdArgInfo;
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
209
0
a61af66fc99e Initial load
duke
parents:
diff changeset
210 typedef struct jmmInterface_1_ {
a61af66fc99e Initial load
duke
parents:
diff changeset
211 void* reserved1;
a61af66fc99e Initial load
duke
parents:
diff changeset
212 void* reserved2;
a61af66fc99e Initial load
duke
parents:
diff changeset
213
a61af66fc99e Initial load
duke
parents:
diff changeset
214 jint (JNICALL *GetVersion) (JNIEnv *env);
a61af66fc99e Initial load
duke
parents:
diff changeset
215
a61af66fc99e Initial load
duke
parents:
diff changeset
216 jint (JNICALL *GetOptionalSupport) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
217 jmmOptionalSupport* support_ptr);
a61af66fc99e Initial load
duke
parents:
diff changeset
218
a61af66fc99e Initial load
duke
parents:
diff changeset
219 /* This is used by JDK 6 and earlier.
a61af66fc99e Initial load
duke
parents:
diff changeset
220 * For JDK 7 and after, use GetInputArgumentArray.
a61af66fc99e Initial load
duke
parents:
diff changeset
221 */
a61af66fc99e Initial load
duke
parents:
diff changeset
222 jobject (JNICALL *GetInputArguments) (JNIEnv *env);
a61af66fc99e Initial load
duke
parents:
diff changeset
223
a61af66fc99e Initial load
duke
parents:
diff changeset
224 jint (JNICALL *GetThreadInfo) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
225 jlongArray ids,
a61af66fc99e Initial load
duke
parents:
diff changeset
226 jint maxDepth,
a61af66fc99e Initial load
duke
parents:
diff changeset
227 jobjectArray infoArray);
a61af66fc99e Initial load
duke
parents:
diff changeset
228 jobjectArray (JNICALL *GetInputArgumentArray) (JNIEnv *env);
a61af66fc99e Initial load
duke
parents:
diff changeset
229
a61af66fc99e Initial load
duke
parents:
diff changeset
230 jobjectArray (JNICALL *GetMemoryPools) (JNIEnv* env, jobject mgr);
a61af66fc99e Initial load
duke
parents:
diff changeset
231
a61af66fc99e Initial load
duke
parents:
diff changeset
232 jobjectArray (JNICALL *GetMemoryManagers) (JNIEnv* env, jobject pool);
a61af66fc99e Initial load
duke
parents:
diff changeset
233
a61af66fc99e Initial load
duke
parents:
diff changeset
234 jobject (JNICALL *GetMemoryPoolUsage) (JNIEnv* env, jobject pool);
a61af66fc99e Initial load
duke
parents:
diff changeset
235 jobject (JNICALL *GetPeakMemoryPoolUsage) (JNIEnv* env, jobject pool);
a61af66fc99e Initial load
duke
parents:
diff changeset
236
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
237 void (JNICALL *GetThreadAllocatedMemory)
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
238 (JNIEnv *env,
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
239 jlongArray ids,
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
240 jlongArray sizeArray);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
241
a61af66fc99e Initial load
duke
parents:
diff changeset
242 jobject (JNICALL *GetMemoryUsage) (JNIEnv* env, jboolean heap);
a61af66fc99e Initial load
duke
parents:
diff changeset
243
a61af66fc99e Initial load
duke
parents:
diff changeset
244 jlong (JNICALL *GetLongAttribute) (JNIEnv *env, jobject obj, jmmLongAttribute att);
a61af66fc99e Initial load
duke
parents:
diff changeset
245 jboolean (JNICALL *GetBoolAttribute) (JNIEnv *env, jmmBoolAttribute att);
a61af66fc99e Initial load
duke
parents:
diff changeset
246 jboolean (JNICALL *SetBoolAttribute) (JNIEnv *env, jmmBoolAttribute att, jboolean flag);
a61af66fc99e Initial load
duke
parents:
diff changeset
247
a61af66fc99e Initial load
duke
parents:
diff changeset
248 jint (JNICALL *GetLongAttributes) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
249 jobject obj,
a61af66fc99e Initial load
duke
parents:
diff changeset
250 jmmLongAttribute* atts,
a61af66fc99e Initial load
duke
parents:
diff changeset
251 jint count,
a61af66fc99e Initial load
duke
parents:
diff changeset
252 jlong* result);
a61af66fc99e Initial load
duke
parents:
diff changeset
253
a61af66fc99e Initial load
duke
parents:
diff changeset
254 jobjectArray (JNICALL *FindCircularBlockedThreads) (JNIEnv *env);
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
255
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
256 // Not used in JDK 6 or JDK 7
0
a61af66fc99e Initial load
duke
parents:
diff changeset
257 jlong (JNICALL *GetThreadCpuTime) (JNIEnv *env, jlong thread_id);
a61af66fc99e Initial load
duke
parents:
diff changeset
258
a61af66fc99e Initial load
duke
parents:
diff changeset
259 jobjectArray (JNICALL *GetVMGlobalNames) (JNIEnv *env);
a61af66fc99e Initial load
duke
parents:
diff changeset
260 jint (JNICALL *GetVMGlobals) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
261 jobjectArray names,
a61af66fc99e Initial load
duke
parents:
diff changeset
262 jmmVMGlobal *globals,
a61af66fc99e Initial load
duke
parents:
diff changeset
263 jint count);
a61af66fc99e Initial load
duke
parents:
diff changeset
264
a61af66fc99e Initial load
duke
parents:
diff changeset
265 jint (JNICALL *GetInternalThreadTimes) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
266 jobjectArray names,
a61af66fc99e Initial load
duke
parents:
diff changeset
267 jlongArray times);
a61af66fc99e Initial load
duke
parents:
diff changeset
268
a61af66fc99e Initial load
duke
parents:
diff changeset
269 jboolean (JNICALL *ResetStatistic) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
270 jvalue obj,
a61af66fc99e Initial load
duke
parents:
diff changeset
271 jmmStatisticType type);
a61af66fc99e Initial load
duke
parents:
diff changeset
272
a61af66fc99e Initial load
duke
parents:
diff changeset
273 void (JNICALL *SetPoolSensor) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
274 jobject pool,
a61af66fc99e Initial load
duke
parents:
diff changeset
275 jmmThresholdType type,
a61af66fc99e Initial load
duke
parents:
diff changeset
276 jobject sensor);
a61af66fc99e Initial load
duke
parents:
diff changeset
277
a61af66fc99e Initial load
duke
parents:
diff changeset
278 jlong (JNICALL *SetPoolThreshold) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
279 jobject pool,
a61af66fc99e Initial load
duke
parents:
diff changeset
280 jmmThresholdType type,
a61af66fc99e Initial load
duke
parents:
diff changeset
281 jlong threshold);
a61af66fc99e Initial load
duke
parents:
diff changeset
282 jobject (JNICALL *GetPoolCollectionUsage) (JNIEnv* env, jobject pool);
a61af66fc99e Initial load
duke
parents:
diff changeset
283
a61af66fc99e Initial load
duke
parents:
diff changeset
284 jint (JNICALL *GetGCExtAttributeInfo) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
285 jobject mgr,
a61af66fc99e Initial load
duke
parents:
diff changeset
286 jmmExtAttributeInfo *ext_info,
a61af66fc99e Initial load
duke
parents:
diff changeset
287 jint count);
a61af66fc99e Initial load
duke
parents:
diff changeset
288 void (JNICALL *GetLastGCStat) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
289 jobject mgr,
a61af66fc99e Initial load
duke
parents:
diff changeset
290 jmmGCStat *gc_stat);
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
291
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
292 jlong (JNICALL *GetThreadCpuTimeWithKind)
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
293 (JNIEnv *env,
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
294 jlong thread_id,
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
295 jboolean user_sys_cpu_time);
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
296 void (JNICALL *GetThreadCpuTimesWithKind)
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
297 (JNIEnv *env,
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
298 jlongArray ids,
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
299 jlongArray timeArray,
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
300 jboolean user_sys_cpu_time);
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
301
0
a61af66fc99e Initial load
duke
parents:
diff changeset
302 jint (JNICALL *DumpHeap0) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
303 jstring outputfile,
a61af66fc99e Initial load
duke
parents:
diff changeset
304 jboolean live);
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
305 jobjectArray (JNICALL *FindDeadlocks) (JNIEnv *env,
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 1972
diff changeset
306 jboolean object_monitors_only);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
307 void (JNICALL *SetVMGlobal) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
308 jstring flag_name,
a61af66fc99e Initial load
duke
parents:
diff changeset
309 jvalue new_value);
a61af66fc99e Initial load
duke
parents:
diff changeset
310 void* reserved6;
a61af66fc99e Initial load
duke
parents:
diff changeset
311 jobjectArray (JNICALL *DumpThreads) (JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
312 jlongArray ids,
a61af66fc99e Initial load
duke
parents:
diff changeset
313 jboolean lockedMonitors,
a61af66fc99e Initial load
duke
parents:
diff changeset
314 jboolean lockedSynchronizers);
3356
78542e2b5e35 7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents: 2100
diff changeset
315 void (JNICALL *SetGCNotificationEnabled) (JNIEnv *env,
78542e2b5e35 7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents: 2100
diff changeset
316 jobject mgr,
78542e2b5e35 7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents: 2100
diff changeset
317 jboolean enabled);
4133
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
318 jobjectArray (JNICALL *GetDiagnosticCommands) (JNIEnv *env);
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
319 void (JNICALL *GetDiagnosticCommandInfo)
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
320 (JNIEnv *env,
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
321 jobjectArray cmds,
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
322 dcmdInfo *infoArray);
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
323 void (JNICALL *GetDiagnosticCommandArgumentsInfo)
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
324 (JNIEnv *env,
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
325 jstring commandName,
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
326 dcmdArgInfo *infoArray);
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
327 jstring (JNICALL *ExecuteDiagnosticCommand)
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
328 (JNIEnv *env,
3b688d6ff3d0 7104647: Adding a diagnostic command framework
fparain
parents: 3356
diff changeset
329 jstring command);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
330 } JmmInterface;
a61af66fc99e Initial load
duke
parents:
diff changeset
331
a61af66fc99e Initial load
duke
parents:
diff changeset
332 #ifdef __cplusplus
a61af66fc99e Initial load
duke
parents:
diff changeset
333 } /* extern "C" */
a61af66fc99e Initial load
duke
parents:
diff changeset
334 #endif /* __cplusplus */
a61af66fc99e Initial load
duke
parents:
diff changeset
335
a61af66fc99e Initial load
duke
parents:
diff changeset
336 #endif /* !_JAVA_JMM_H_ */