codekingpro/portable-devtools
116k
1/*
2 * Copyright (c) 2002, 2024, 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. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 /* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */
27
28 /* Include file for the Java(tm) Virtual Machine Tool Interface */
29
30#ifndef _JAVA_JVMTI_H_
31#define _JAVA_JVMTI_H_
32
33#include "jni.h"
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39enum {
40 JVMTI_VERSION_1 = 0x30010000,
41 JVMTI_VERSION_1_0 = 0x30010000,
42 JVMTI_VERSION_1_1 = 0x30010100,
43 JVMTI_VERSION_1_2 = 0x30010200,
44 JVMTI_VERSION_9 = 0x30090000,
45 JVMTI_VERSION_11 = 0x300B0000,
46 JVMTI_VERSION_19 = 0x30130000,
47 JVMTI_VERSION_21 = 0x30150000,
48
49 JVMTI_VERSION = 0x30000000 + (23 * 0x10000) + ( 0 * 0x100) + 0 /* version: 23.0.0 */
50};
51
52JNIEXPORT jint JNICALL
53Agent_OnLoad(JavaVM *vm, char *options, void *reserved);
54
55JNIEXPORT jint JNICALL
56Agent_OnAttach(JavaVM* vm, char* options, void* reserved);
57
58JNIEXPORT void JNICALL
59Agent_OnUnload(JavaVM *vm);
60
61 /* Forward declaration of the environment */
62
63struct _jvmtiEnv;
64
65struct jvmtiInterface_1_;
66
67#ifdef __cplusplus
68typedef _jvmtiEnv jvmtiEnv;
69#else
70typedef const struct jvmtiInterface_1_ *jvmtiEnv;
71#endif /* __cplusplus */
72
73/* Derived Base Types */
74
75typedef jobject jthread;
76typedef jobject jthreadGroup;
77typedef jlong jlocation;
78struct _jrawMonitorID;
79typedef struct _jrawMonitorID *jrawMonitorID;
80typedef struct JNINativeInterface_ jniNativeInterface;
81
82 /* Constants */
83
84
85 /* Thread State Flags */
86
87enum {
88 JVMTI_THREAD_STATE_ALIVE = 0x0001,
89 JVMTI_THREAD_STATE_TERMINATED = 0x0002,
90 JVMTI_THREAD_STATE_RUNNABLE = 0x0004,
91 JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400,
92 JVMTI_THREAD_STATE_WAITING = 0x0080,
93 JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010,
94 JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020,
95 JVMTI_THREAD_STATE_SLEEPING = 0x0040,
96 JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100,
97 JVMTI_THREAD_STATE_PARKED = 0x0200,
98 JVMTI_THREAD_STATE_SUSPENDED = 0x100000,
99 JVMTI_THREAD_STATE_INTERRUPTED = 0x200000,
100 JVMTI_THREAD_STATE_IN_NATIVE = 0x400000,
101 JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000,
102 JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000,
103 JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000
104};
105
106 /* java.lang.Thread.State Conversion Masks */
107
108enum {
109 JVMTI_JAVA_LANG_THREAD_STATE_MASK = JVMTI_THREAD_STATE_TERMINATED | JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT,
110 JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0,
111 JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED,
112 JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE,
113 JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER,
114 JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY,
115 JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT
116};
117
118 /* Thread Priority Constants */
119
120enum {
121 JVMTI_THREAD_MIN_PRIORITY = 1,
122 JVMTI_THREAD_NORM_PRIORITY = 5,
123 JVMTI_THREAD_MAX_PRIORITY = 10
124};
125
126 /* Heap Filter Flags */
127
128enum {
129 JVMTI_HEAP_FILTER_TAGGED = 0x4,
130 JVMTI_HEAP_FILTER_UNTAGGED = 0x8,
131 JVMTI_HEAP_FILTER_CLASS_TAGGED = 0x10,
132 JVMTI_HEAP_FILTER_CLASS_UNTAGGED = 0x20
133};
134
135 /* Heap Visit Control Flags */
136
137enum {
138 JVMTI_VISIT_OBJECTS = 0x100,
139 JVMTI_VISIT_ABORT = 0x8000
140};
141
142 /* Heap Reference Enumeration */
143
144typedef enum {
145 JVMTI_HEAP_REFERENCE_CLASS = 1,
146 JVMTI_HEAP_REFERENCE_FIELD = 2,
147 JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT = 3,
148 JVMTI_HEAP_REFERENCE_CLASS_LOADER = 4,
149 JVMTI_HEAP_REFERENCE_SIGNERS = 5,
150 JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN = 6,
151 JVMTI_HEAP_REFERENCE_INTERFACE = 7,
152 JVMTI_HEAP_REFERENCE_STATIC_FIELD = 8,
153 JVMTI_HEAP_REFERENCE_CONSTANT_POOL = 9,
154 JVMTI_HEAP_REFERENCE_SUPERCLASS = 10,
155 JVMTI_HEAP_REFERENCE_JNI_GLOBAL = 21,
156 JVMTI_HEAP_REFERENCE_SYSTEM_CLASS = 22,
157 JVMTI_HEAP_REFERENCE_MONITOR = 23,
158 JVMTI_HEAP_REFERENCE_STACK_LOCAL = 24,
159 JVMTI_HEAP_REFERENCE_JNI_LOCAL = 25,
160 JVMTI_HEAP_REFERENCE_THREAD = 26,
161 JVMTI_HEAP_REFERENCE_OTHER = 27
162} jvmtiHeapReferenceKind;
163
164 /* Primitive Type Enumeration */
165
166typedef enum {
167 JVMTI_PRIMITIVE_TYPE_BOOLEAN = 90,
168 JVMTI_PRIMITIVE_TYPE_BYTE = 66,
169 JVMTI_PRIMITIVE_TYPE_CHAR = 67,
170 JVMTI_PRIMITIVE_TYPE_SHORT = 83,
171 JVMTI_PRIMITIVE_TYPE_INT = 73,
172 JVMTI_PRIMITIVE_TYPE_LONG = 74,
173 JVMTI_PRIMITIVE_TYPE_FLOAT = 70,
174 JVMTI_PRIMITIVE_TYPE_DOUBLE = 68
175} jvmtiPrimitiveType;
176
177 /* Heap Object Filter Enumeration */
178
179typedef enum {
180 JVMTI_HEAP_OBJECT_TAGGED = 1,
181 JVMTI_HEAP_OBJECT_UNTAGGED = 2,
182 JVMTI_HEAP_OBJECT_EITHER = 3
183} jvmtiHeapObjectFilter;
184
185 /* Heap Root Kind Enumeration */
186
187typedef enum {
188 JVMTI_HEAP_ROOT_JNI_GLOBAL = 1,
189 JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2,
190 JVMTI_HEAP_ROOT_MONITOR = 3,
191 JVMTI_HEAP_ROOT_STACK_LOCAL = 4,
192 JVMTI_HEAP_ROOT_JNI_LOCAL = 5,
193 JVMTI_HEAP_ROOT_THREAD = 6,
194 JVMTI_HEAP_ROOT_OTHER = 7
195} jvmtiHeapRootKind;
196
197 /* Object Reference Enumeration */
198
199typedef enum {
200 JVMTI_REFERENCE_CLASS = 1,
201 JVMTI_REFERENCE_FIELD = 2,
202 JVMTI_REFERENCE_ARRAY_ELEMENT = 3,
203 JVMTI_REFERENCE_CLASS_LOADER = 4,
204 JVMTI_REFERENCE_SIGNERS = 5,
205 JVMTI_REFERENCE_PROTECTION_DOMAIN = 6,
206 JVMTI_REFERENCE_INTERFACE = 7,
207 JVMTI_REFERENCE_STATIC_FIELD = 8,
208 JVMTI_REFERENCE_CONSTANT_POOL = 9
209} jvmtiObjectReferenceKind;
210
211 /* Iteration Control Enumeration */
212
213typedef enum {
214 JVMTI_ITERATION_CONTINUE = 1,
215 JVMTI_ITERATION_IGNORE = 2,
216 JVMTI_ITERATION_ABORT = 0
217} jvmtiIterationControl;
218
219 /* Class Status Flags */
220
221enum {
222 JVMTI_CLASS_STATUS_VERIFIED = 1,
223 JVMTI_CLASS_STATUS_PREPARED = 2,
224 JVMTI_CLASS_STATUS_INITIALIZED = 4,
225 JVMTI_CLASS_STATUS_ERROR = 8,
226 JVMTI_CLASS_STATUS_ARRAY = 16,
227 JVMTI_CLASS_STATUS_PRIMITIVE = 32
228};
229
230 /* Event Enable/Disable */
231
232typedef enum {
233 JVMTI_ENABLE = 1,
234 JVMTI_DISABLE = 0
235} jvmtiEventMode;
236
237 /* Extension Function/Event Parameter Types */
238
239typedef enum {
240 JVMTI_TYPE_JBYTE = 101,
241 JVMTI_TYPE_JCHAR = 102,
242 JVMTI_TYPE_JSHORT = 103,
243 JVMTI_TYPE_JINT = 104,
244 JVMTI_TYPE_JLONG = 105,
245 JVMTI_TYPE_JFLOAT = 106,
246 JVMTI_TYPE_JDOUBLE = 107,
247 JVMTI_TYPE_JBOOLEAN = 108,
248 JVMTI_TYPE_JOBJECT = 109,
249 JVMTI_TYPE_JTHREAD = 110,
250 JVMTI_TYPE_JCLASS = 111,
251 JVMTI_TYPE_JVALUE = 112,
252 JVMTI_TYPE_JFIELDID = 113,
253 JVMTI_TYPE_JMETHODID = 114,
254 JVMTI_TYPE_CCHAR = 115,
255 JVMTI_TYPE_CVOID = 116,
256 JVMTI_TYPE_JNIENV = 117
257} jvmtiParamTypes;
258
259 /* Extension Function/Event Parameter Kinds */
260
261typedef enum {
262 JVMTI_KIND_IN = 91,
263 JVMTI_KIND_IN_PTR = 92,
264 JVMTI_KIND_IN_BUF = 93,
265 JVMTI_KIND_ALLOC_BUF = 94,
266 JVMTI_KIND_ALLOC_ALLOC_BUF = 95,
267 JVMTI_KIND_OUT = 96,
268 JVMTI_KIND_OUT_BUF = 97
269} jvmtiParamKind;
270
271 /* Timer Kinds */
272
273typedef enum {
274 JVMTI_TIMER_USER_CPU = 30,
275 JVMTI_TIMER_TOTAL_CPU = 31,
276 JVMTI_TIMER_ELAPSED = 32
277} jvmtiTimerKind;
278
279 /* Phases of execution */
280
281typedef enum {
282 JVMTI_PHASE_ONLOAD = 1,
283 JVMTI_PHASE_PRIMORDIAL = 2,
284 JVMTI_PHASE_START = 6,
285 JVMTI_PHASE_LIVE = 4,
286 JVMTI_PHASE_DEAD = 8
287} jvmtiPhase;
288
289 /* Version Interface Types */
290
291enum {
292 JVMTI_VERSION_INTERFACE_JNI = 0x00000000,
293 JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000
294};
295
296 /* Version Masks */
297
298enum {
299 JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000,
300 JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000,
301 JVMTI_VERSION_MASK_MINOR = 0x0000FF00,
302 JVMTI_VERSION_MASK_MICRO = 0x000000FF
303};
304
305 /* Version Shifts */
306
307enum {
308 JVMTI_VERSION_SHIFT_MAJOR = 16,
309 JVMTI_VERSION_SHIFT_MINOR = 8,
310 JVMTI_VERSION_SHIFT_MICRO = 0
311};
312
313 /* Verbose Flag Enumeration */
314
315typedef enum {
316 JVMTI_VERBOSE_OTHER = 0,
317 JVMTI_VERBOSE_GC = 1,
318 JVMTI_VERBOSE_CLASS = 2,
319 JVMTI_VERBOSE_JNI = 4
320} jvmtiVerboseFlag;
321
322 /* JLocation Format Enumeration */
323
324typedef enum {
325 JVMTI_JLOCATION_JVMBCI = 1,
326 JVMTI_JLOCATION_MACHINEPC = 2,
327 JVMTI_JLOCATION_OTHER = 0
328} jvmtiJlocationFormat;
329
330 /* Resource Exhaustion Flags */
331
332enum {
333 JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR = 0x0001,
334 JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP = 0x0002,
335 JVMTI_RESOURCE_EXHAUSTED_THREADS = 0x0004
336};
337
338 /* Errors */
339
340typedef enum {
341 JVMTI_ERROR_NONE = 0,
342 JVMTI_ERROR_INVALID_THREAD = 10,
343 JVMTI_ERROR_INVALID_THREAD_GROUP = 11,
344 JVMTI_ERROR_INVALID_PRIORITY = 12,
345 JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,
346 JVMTI_ERROR_THREAD_SUSPENDED = 14,
347 JVMTI_ERROR_THREAD_NOT_ALIVE = 15,
348 JVMTI_ERROR_INVALID_OBJECT = 20,
349 JVMTI_ERROR_INVALID_CLASS = 21,
350 JVMTI_ERROR_CLASS_NOT_PREPARED = 22,
351 JVMTI_ERROR_INVALID_METHODID = 23,
352 JVMTI_ERROR_INVALID_LOCATION = 24,
353 JVMTI_ERROR_INVALID_FIELDID = 25,
354 JVMTI_ERROR_INVALID_MODULE = 26,
355 JVMTI_ERROR_NO_MORE_FRAMES = 31,
356 JVMTI_ERROR_OPAQUE_FRAME = 32,
357 JVMTI_ERROR_TYPE_MISMATCH = 34,
358 JVMTI_ERROR_INVALID_SLOT = 35,
359 JVMTI_ERROR_DUPLICATE = 40,
360 JVMTI_ERROR_NOT_FOUND = 41,
361 JVMTI_ERROR_INVALID_MONITOR = 50,
362 JVMTI_ERROR_NOT_MONITOR_OWNER = 51,
363 JVMTI_ERROR_INTERRUPT = 52,
364 JVMTI_ERROR_INVALID_CLASS_FORMAT = 60,
365 JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61,
366 JVMTI_ERROR_FAILS_VERIFICATION = 62,
367 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63,
368 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64,
369 JVMTI_ERROR_INVALID_TYPESTATE = 65,
370 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66,
371 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67,
372 JVMTI_ERROR_UNSUPPORTED_VERSION = 68,
373 JVMTI_ERROR_NAMES_DONT_MATCH = 69,
374 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,
375 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,
376 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_ATTRIBUTE_CHANGED = 72,
377 JVMTI_ERROR_UNSUPPORTED_OPERATION = 73,
378 JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,
379 JVMTI_ERROR_UNMODIFIABLE_MODULE = 80,
380 JVMTI_ERROR_NOT_AVAILABLE = 98,
381 JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,
382 JVMTI_ERROR_NULL_POINTER = 100,
383 JVMTI_ERROR_ABSENT_INFORMATION = 101,
384 JVMTI_ERROR_INVALID_EVENT_TYPE = 102,
385 JVMTI_ERROR_ILLEGAL_ARGUMENT = 103,
386 JVMTI_ERROR_NATIVE_METHOD = 104,
387 JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED = 106,
388 JVMTI_ERROR_OUT_OF_MEMORY = 110,
389 JVMTI_ERROR_ACCESS_DENIED = 111,
390 JVMTI_ERROR_WRONG_PHASE = 112,
391 JVMTI_ERROR_INTERNAL = 113,
392 JVMTI_ERROR_UNATTACHED_THREAD = 115,
393 JVMTI_ERROR_INVALID_ENVIRONMENT = 116,
394 JVMTI_ERROR_MAX = 116
395} jvmtiError;
396
397 /* Event IDs */
398
399typedef enum {
400 JVMTI_MIN_EVENT_TYPE_VAL = 50,
401 JVMTI_EVENT_VM_INIT = 50,
402 JVMTI_EVENT_VM_DEATH = 51,
403 JVMTI_EVENT_THREAD_START = 52,
404 JVMTI_EVENT_THREAD_END = 53,
405 JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54,
406 JVMTI_EVENT_CLASS_LOAD = 55,
407 JVMTI_EVENT_CLASS_PREPARE = 56,
408 JVMTI_EVENT_VM_START = 57,
409 JVMTI_EVENT_EXCEPTION = 58,
410 JVMTI_EVENT_EXCEPTION_CATCH = 59,
411 JVMTI_EVENT_SINGLE_STEP = 60,
412 JVMTI_EVENT_FRAME_POP = 61,
413 JVMTI_EVENT_BREAKPOINT = 62,
414 JVMTI_EVENT_FIELD_ACCESS = 63,
415 JVMTI_EVENT_FIELD_MODIFICATION = 64,
416 JVMTI_EVENT_METHOD_ENTRY = 65,
417 JVMTI_EVENT_METHOD_EXIT = 66,
418 JVMTI_EVENT_NATIVE_METHOD_BIND = 67,
419 JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,
420 JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,
421 JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,
422 JVMTI_EVENT_DATA_DUMP_REQUEST = 71,
423 JVMTI_EVENT_MONITOR_WAIT = 73,
424 JVMTI_EVENT_MONITOR_WAITED = 74,
425 JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,
426 JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,
427 JVMTI_EVENT_RESOURCE_EXHAUSTED = 80,
428 JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,
429 JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,
430 JVMTI_EVENT_OBJECT_FREE = 83,
431 JVMTI_EVENT_VM_OBJECT_ALLOC = 84,
432 JVMTI_EVENT_SAMPLED_OBJECT_ALLOC = 86,
433 JVMTI_EVENT_VIRTUAL_THREAD_START = 87,
434 JVMTI_EVENT_VIRTUAL_THREAD_END = 88,
435 JVMTI_MAX_EVENT_TYPE_VAL = 88
436} jvmtiEvent;
437
438
439 /* Pre-Declarations */
440struct jvmtiThreadInfo;
441typedef struct jvmtiThreadInfo jvmtiThreadInfo;
442struct jvmtiMonitorStackDepthInfo;
443typedef struct jvmtiMonitorStackDepthInfo jvmtiMonitorStackDepthInfo;
444struct jvmtiThreadGroupInfo;
445typedef struct jvmtiThreadGroupInfo jvmtiThreadGroupInfo;
446struct jvmtiFrameInfo;
447typedef struct jvmtiFrameInfo jvmtiFrameInfo;
448struct jvmtiStackInfo;
449typedef struct jvmtiStackInfo jvmtiStackInfo;
450struct jvmtiHeapReferenceInfoField;
451typedef struct jvmtiHeapReferenceInfoField jvmtiHeapReferenceInfoField;
452struct jvmtiHeapReferenceInfoArray;
453typedef struct jvmtiHeapReferenceInfoArray jvmtiHeapReferenceInfoArray;
454struct jvmtiHeapReferenceInfoConstantPool;
455typedef struct jvmtiHeapReferenceInfoConstantPool jvmtiHeapReferenceInfoConstantPool;
456struct jvmtiHeapReferenceInfoStackLocal;
457typedef struct jvmtiHeapReferenceInfoStackLocal jvmtiHeapReferenceInfoStackLocal;
458struct jvmtiHeapReferenceInfoJniLocal;
459typedef struct jvmtiHeapReferenceInfoJniLocal jvmtiHeapReferenceInfoJniLocal;
460struct jvmtiHeapReferenceInfoReserved;
461typedef struct jvmtiHeapReferenceInfoReserved jvmtiHeapReferenceInfoReserved;
462union jvmtiHeapReferenceInfo;
463typedef union jvmtiHeapReferenceInfo jvmtiHeapReferenceInfo;
464struct jvmtiHeapCallbacks;
465typedef struct jvmtiHeapCallbacks jvmtiHeapCallbacks;
466struct jvmtiClassDefinition;
467typedef struct jvmtiClassDefinition jvmtiClassDefinition;
468struct jvmtiMonitorUsage;
469typedef struct jvmtiMonitorUsage jvmtiMonitorUsage;
470struct jvmtiLineNumberEntry;
471typedef struct jvmtiLineNumberEntry jvmtiLineNumberEntry;
472struct jvmtiLocalVariableEntry;
473typedef struct jvmtiLocalVariableEntry jvmtiLocalVariableEntry;
474struct jvmtiParamInfo;
475typedef struct jvmtiParamInfo jvmtiParamInfo;
476struct jvmtiExtensionFunctionInfo;
477typedef struct jvmtiExtensionFunctionInfo jvmtiExtensionFunctionInfo;
478struct jvmtiExtensionEventInfo;
479typedef struct jvmtiExtensionEventInfo jvmtiExtensionEventInfo;
480struct jvmtiTimerInfo;
481typedef struct jvmtiTimerInfo jvmtiTimerInfo;
482struct jvmtiAddrLocationMap;
483typedef struct jvmtiAddrLocationMap jvmtiAddrLocationMap;
484
485 /* Function Types */
486
487typedef void (JNICALL *jvmtiStartFunction)
488 (jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg);
489
490typedef jint (JNICALL *jvmtiHeapIterationCallback)
491 (jlong class_tag, jlong size, jlong* tag_ptr, jint length, void* user_data);
492
493typedef jint (JNICALL *jvmtiHeapReferenceCallback)
494 (jvmtiHeapReferenceKind reference_kind, const jvmtiHeapReferenceInfo* reference_info, jlong class_tag, jlong referrer_class_tag, jlong size, jlong* tag_ptr, jlong* referrer_tag_ptr, jint length, void* user_data);
495
496typedef jint (JNICALL *jvmtiPrimitiveFieldCallback)
497 (jvmtiHeapReferenceKind kind, const jvmtiHeapReferenceInfo* info, jlong object_class_tag, jlong* object_tag_ptr, jvalue value, jvmtiPrimitiveType value_type, void* user_data);
498
499typedef jint (JNICALL *jvmtiArrayPrimitiveValueCallback)
500 (jlong class_tag, jlong size, jlong* tag_ptr, jint element_count, jvmtiPrimitiveType element_type, const void* elements, void* user_data);
501
502typedef jint (JNICALL *jvmtiStringPrimitiveValueCallback)
503 (jlong class_tag, jlong size, jlong* tag_ptr, const jchar* value, jint value_length, void* user_data);
504
505typedef jint (JNICALL *jvmtiReservedCallback)
506 ();
507
508typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback)
509 (jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);
510
511typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback)
512 (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);
513
514typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback)
515 (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_data);
516
517typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback)
518 (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data);
519
520typedef jvmtiError (JNICALL *jvmtiExtensionFunction)
521 (jvmtiEnv* jvmti_env, ...);
522
523typedef void (JNICALL *jvmtiExtensionEvent)
524 (jvmtiEnv* jvmti_env, ...);
525
526
527 /* Structure Types */
528struct jvmtiThreadInfo {
529 char* name;
530 jint priority;
531 jboolean is_daemon;
532 jthreadGroup thread_group;
533 jobject context_class_loader;
534};
535struct jvmtiMonitorStackDepthInfo {
536 jobject monitor;
537 jint stack_depth;
538};
539struct jvmtiThreadGroupInfo {
540 jthreadGroup parent;
541 char* name;
542 jint max_priority;
543 jboolean is_daemon;
544};
545struct jvmtiFrameInfo {
546 jmethodID method;
547 jlocation location;
548};
549struct jvmtiStackInfo {
550 jthread thread;
551 jint state;
552 jvmtiFrameInfo* frame_buffer;
553 jint frame_count;
554};
555struct jvmtiHeapReferenceInfoField {
556 jint index;
557};
558struct jvmtiHeapReferenceInfoArray {
559 jint index;
560};
561struct jvmtiHeapReferenceInfoConstantPool {
562 jint index;
563};
564struct jvmtiHeapReferenceInfoStackLocal {
565 jlong thread_tag;
566 jlong thread_id;
567 jint depth;
568 jmethodID method;
569 jlocation location;
570 jint slot;
571};
572struct jvmtiHeapReferenceInfoJniLocal {
573 jlong thread_tag;
574 jlong thread_id;
575 jint depth;
576 jmethodID method;
577};
578struct jvmtiHeapReferenceInfoReserved {
579 jlong reserved1;
580 jlong reserved2;
581 jlong reserved3;
582 jlong reserved4;
583 jlong reserved5;
584 jlong reserved6;
585 jlong reserved7;
586 jlong reserved8;
587};
588union jvmtiHeapReferenceInfo {
589 jvmtiHeapReferenceInfoField field;
590 jvmtiHeapReferenceInfoArray array;
591 jvmtiHeapReferenceInfoConstantPool constant_pool;
592 jvmtiHeapReferenceInfoStackLocal stack_local;
593 jvmtiHeapReferenceInfoJniLocal jni_local;
594 jvmtiHeapReferenceInfoReserved other;
595};
596struct jvmtiHeapCallbacks {
597 jvmtiHeapIterationCallback heap_iteration_callback;
598 jvmtiHeapReferenceCallback heap_reference_callback;
599 jvmtiPrimitiveFieldCallback primitive_field_callback;
600 jvmtiArrayPrimitiveValueCallback array_primitive_value_callback;
601 jvmtiStringPrimitiveValueCallback string_primitive_value_callback;
602 jvmtiReservedCallback reserved5;
603 jvmtiReservedCallback reserved6;
604 jvmtiReservedCallback reserved7;
605 jvmtiReservedCallback reserved8;
606 jvmtiReservedCallback reserved9;
607 jvmtiReservedCallback reserved10;
608 jvmtiReservedCallback reserved11;
609 jvmtiReservedCallback reserved12;
610 jvmtiReservedCallback reserved13;
611 jvmtiReservedCallback reserved14;
612 jvmtiReservedCallback reserved15;
613};
614struct jvmtiClassDefinition {
615 jclass klass;
616 jint class_byte_count;
617 const unsigned char* class_bytes;
618};
619struct jvmtiMonitorUsage {
620 jthread owner;
621 jint entry_count;
622 jint waiter_count;
623 jthread* waiters;
624 jint notify_waiter_count;
625 jthread* notify_waiters;
626};
627struct jvmtiLineNumberEntry {
628 jlocation start_location;
629 jint line_number;
630};
631struct jvmtiLocalVariableEntry {
632 jlocation start_location;
633 jint length;
634 char* name;
635 char* signature;
636 char* generic_signature;
637 jint slot;
638};
639struct jvmtiParamInfo {
640 char* name;
641 jvmtiParamKind kind;
642 jvmtiParamTypes base_type;
643 jboolean null_ok;
644};
645struct jvmtiExtensionFunctionInfo {
646 jvmtiExtensionFunction func;
647 char* id;
648 char* short_description;
649 jint param_count;
650 jvmtiParamInfo* params;
651 jint error_count;
652 jvmtiError* errors;
653};
654struct jvmtiExtensionEventInfo {
655 jint extension_event_index;
656 char* id;
657 char* short_description;
658 jint param_count;
659 jvmtiParamInfo* params;
660};
661struct jvmtiTimerInfo {
662 jlong max_value;
663 jboolean may_skip_forward;
664 jboolean may_skip_backward;
665 jvmtiTimerKind kind;
666 jlong reserved1;
667 jlong reserved2;
668};
669struct jvmtiAddrLocationMap {
670 const void* start_address;
671 jlocation location;
672};
673
674typedef struct {
675 unsigned int can_tag_objects : 1;
676 unsigned int can_generate_field_modification_events : 1;
677 unsigned int can_generate_field_access_events : 1;
678 unsigned int can_get_bytecodes : 1;
679 unsigned int can_get_synthetic_attribute : 1;
680 unsigned int can_get_owned_monitor_info : 1;
681 unsigned int can_get_current_contended_monitor : 1;
682 unsigned int can_get_monitor_info : 1;
683 unsigned int can_pop_frame : 1;
684 unsigned int can_redefine_classes : 1;
685 unsigned int can_signal_thread : 1;
686 unsigned int can_get_source_file_name : 1;
687 unsigned int can_get_line_numbers : 1;
688 unsigned int can_get_source_debug_extension : 1;
689 unsigned int can_access_local_variables : 1;
690 unsigned int can_maintain_original_method_order : 1;
691 unsigned int can_generate_single_step_events : 1;
692 unsigned int can_generate_exception_events : 1;
693 unsigned int can_generate_frame_pop_events : 1;
694 unsigned int can_generate_breakpoint_events : 1;
695 unsigned int can_suspend : 1;
696 unsigned int can_redefine_any_class : 1;
697 unsigned int can_get_current_thread_cpu_time : 1;
698 unsigned int can_get_thread_cpu_time : 1;
699 unsigned int can_generate_method_entry_events : 1;
700 unsigned int can_generate_method_exit_events : 1;
701 unsigned int can_generate_all_class_hook_events : 1;
702 unsigned int can_generate_compiled_method_load_events : 1;
703 unsigned int can_generate_monitor_events : 1;
704 unsigned int can_generate_vm_object_alloc_events : 1;
705 unsigned int can_generate_native_method_bind_events : 1;
706 unsigned int can_generate_garbage_collection_events : 1;
707 unsigned int can_generate_object_free_events : 1;
708 unsigned int can_force_early_return : 1;
709 unsigned int can_get_owned_monitor_stack_depth_info : 1;
710 unsigned int can_get_constant_pool : 1;
711 unsigned int can_set_native_method_prefix : 1;
712 unsigned int can_retransform_classes : 1;
713 unsigned int can_retransform_any_class : 1;
714 unsigned int can_generate_resource_exhaustion_heap_events : 1;
715 unsigned int can_generate_resource_exhaustion_threads_events : 1;
716 unsigned int can_generate_early_vmstart : 1;
717 unsigned int can_generate_early_class_hook_events : 1;
718 unsigned int can_generate_sampled_object_alloc_events : 1;
719 unsigned int can_support_virtual_threads : 1;
720 unsigned int : 3;
721 unsigned int : 16;
722 unsigned int : 16;
723 unsigned int : 16;
724 unsigned int : 16;
725 unsigned int : 16;
726} jvmtiCapabilities;
727
728
729 /* Event Definitions */
730
731typedef void (JNICALL *jvmtiEventReserved)(void);
732
733
734typedef void (JNICALL *jvmtiEventBreakpoint)
735 (jvmtiEnv *jvmti_env,
736 JNIEnv* jni_env,
737 jthread thread,
738 jmethodID method,
739 jlocation location);
740
741typedef void (JNICALL *jvmtiEventClassFileLoadHook)
742 (jvmtiEnv *jvmti_env,
743 JNIEnv* jni_env,
744 jclass class_being_redefined,
745 jobject loader,
746 const char* name,
747 jobject protection_domain,
748 jint class_data_len,
749 const unsigned char* class_data,
750 jint* new_class_data_len,
751 unsigned char** new_class_data);
752
753typedef void (JNICALL *jvmtiEventClassLoad)
754 (jvmtiEnv *jvmti_env,
755 JNIEnv* jni_env,
756 jthread thread,
757 jclass klass);
758
759typedef void (JNICALL *jvmtiEventClassPrepare)
760 (jvmtiEnv *jvmti_env,
761 JNIEnv* jni_env,
762 jthread thread,
763 jclass klass);
764
765typedef void (JNICALL *jvmtiEventCompiledMethodLoad)
766 (jvmtiEnv *jvmti_env,
767 jmethodID method,
768 jint code_size,
769 const void* code_addr,
770 jint map_length,
771 const jvmtiAddrLocationMap* map,
772 const void* compile_info);
773
774typedef void (JNICALL *jvmtiEventCompiledMethodUnload)
775 (jvmtiEnv *jvmti_env,
776 jmethodID method,
777 const void* code_addr);
778
779typedef void (JNICALL *jvmtiEventDataDumpRequest)
780 (jvmtiEnv *jvmti_env);
781
782typedef void (JNICALL *jvmtiEventDynamicCodeGenerated)
783 (jvmtiEnv *jvmti_env,
784 const char* name,
785 const void* address,
786 jint length);
787
788typedef void (JNICALL *jvmtiEventException)
789 (jvmtiEnv *jvmti_env,
790 JNIEnv* jni_env,
791 jthread thread,
792 jmethodID method,
793 jlocation location,
794 jobject exception,
795 jmethodID catch_method,
796 jlocation catch_location);
797
798typedef void (JNICALL *jvmtiEventExceptionCatch)
799 (jvmtiEnv *jvmti_env,
800 JNIEnv* jni_env,
801 jthread thread,
802 jmethodID method,
803 jlocation location,
804 jobject exception);
805
806typedef void (JNICALL *jvmtiEventFieldAccess)
807 (jvmtiEnv *jvmti_env,
808 JNIEnv* jni_env,
809 jthread thread,
810 jmethodID method,
811 jlocation location,
812 jclass field_klass,
813 jobject object,
814 jfieldID field);
815
816typedef void (JNICALL *jvmtiEventFieldModification)
817 (jvmtiEnv *jvmti_env,
818 JNIEnv* jni_env,
819 jthread thread,
820 jmethodID method,
821 jlocation location,
822 jclass field_klass,
823 jobject object,
824 jfieldID field,
825 char signature_type,
826 jvalue new_value);
827
828typedef void (JNICALL *jvmtiEventFramePop)
829 (jvmtiEnv *jvmti_env,
830 JNIEnv* jni_env,
831 jthread thread,
832 jmethodID method,
833 jboolean was_popped_by_exception);
834
835typedef void (JNICALL *jvmtiEventGarbageCollectionFinish)
836 (jvmtiEnv *jvmti_env);
837
838typedef void (JNICALL *jvmtiEventGarbageCollectionStart)
839 (jvmtiEnv *jvmti_env);
840
841typedef void (JNICALL *jvmtiEventMethodEntry)
842 (jvmtiEnv *jvmti_env,
843 JNIEnv* jni_env,
844 jthread thread,
845 jmethodID method);
846
847typedef void (JNICALL *jvmtiEventMethodExit)
848 (jvmtiEnv *jvmti_env,
849 JNIEnv* jni_env,
850 jthread thread,
851 jmethodID method,
852 jboolean was_popped_by_exception,
853 jvalue return_value);
854
855typedef void (JNICALL *jvmtiEventMonitorContendedEnter)
856 (jvmtiEnv *jvmti_env,
857 JNIEnv* jni_env,
858 jthread thread,
859 jobject object);
860
861typedef void (JNICALL *jvmtiEventMonitorContendedEntered)
862 (jvmtiEnv *jvmti_env,
863 JNIEnv* jni_env,
864 jthread thread,
865 jobject object);
866
867typedef void (JNICALL *jvmtiEventMonitorWait)
868 (jvmtiEnv *jvmti_env,
869 JNIEnv* jni_env,
870 jthread thread,
871 jobject object,
872 jlong timeout);
873
874typedef void (JNICALL *jvmtiEventMonitorWaited)
875 (jvmtiEnv *jvmti_env,
876 JNIEnv* jni_env,
877 jthread thread,
878 jobject object,
879 jboolean timed_out);
880
881typedef void (JNICALL *jvmtiEventNativeMethodBind)
882 (jvmtiEnv *jvmti_env,
883 JNIEnv* jni_env,
884 jthread thread,
885 jmethodID method,
886 void* address,
887 void** new_address_ptr);
888
889typedef void (JNICALL *jvmtiEventObjectFree)
890 (jvmtiEnv *jvmti_env,
891 jlong tag);
892
893typedef void (JNICALL *jvmtiEventResourceExhausted)
894 (jvmtiEnv *jvmti_env,
895 JNIEnv* jni_env,
896 jint flags,
897 const void* reserved,
898 const char* description);
899
900typedef void (JNICALL *jvmtiEventSampledObjectAlloc)
901 (jvmtiEnv *jvmti_env,
902 JNIEnv* jni_env,
903 jthread thread,
904 jobject object,
905 jclass object_klass,
906 jlong size);
907
908typedef void (JNICALL *jvmtiEventSingleStep)
909 (jvmtiEnv *jvmti_env,
910 JNIEnv* jni_env,
911 jthread thread,
912 jmethodID method,
913 jlocation location);
914
915typedef void (JNICALL *jvmtiEventThreadEnd)
916 (jvmtiEnv *jvmti_env,
917 JNIEnv* jni_env,
918 jthread thread);
919
920typedef void (JNICALL *jvmtiEventThreadStart)
921 (jvmtiEnv *jvmti_env,
922 JNIEnv* jni_env,
923 jthread thread);
924
925typedef void (JNICALL *jvmtiEventVirtualThreadEnd)
926 (jvmtiEnv *jvmti_env,
927 JNIEnv* jni_env,
928 jthread virtual_thread);
929
930typedef void (JNICALL *jvmtiEventVirtualThreadStart)
931 (jvmtiEnv *jvmti_env,
932 JNIEnv* jni_env,
933 jthread virtual_thread);
934
935typedef void (JNICALL *jvmtiEventVMDeath)
936 (jvmtiEnv *jvmti_env,
937 JNIEnv* jni_env);
938
939typedef void (JNICALL *jvmtiEventVMInit)
940 (jvmtiEnv *jvmti_env,
941 JNIEnv* jni_env,
942 jthread thread);
943
944typedef void (JNICALL *jvmtiEventVMObjectAlloc)
945 (jvmtiEnv *jvmti_env,
946 JNIEnv* jni_env,
947 jthread thread,
948 jobject object,
949 jclass object_klass,
950 jlong size);
951
952typedef void (JNICALL *jvmtiEventVMStart)
953 (jvmtiEnv *jvmti_env,
954 JNIEnv* jni_env);
955
956 /* Event Callback Structure */
957
958typedef struct {
959 /* 50 : VM Initialization Event */
960 jvmtiEventVMInit VMInit;
961 /* 51 : VM Death Event */
962 jvmtiEventVMDeath VMDeath;
963 /* 52 : Thread Start */
964 jvmtiEventThreadStart ThreadStart;
965 /* 53 : Thread End */
966 jvmtiEventThreadEnd ThreadEnd;
967 /* 54 : Class File Load Hook */
968 jvmtiEventClassFileLoadHook ClassFileLoadHook;
969 /* 55 : Class Load */
970 jvmtiEventClassLoad ClassLoad;
971 /* 56 : Class Prepare */
972 jvmtiEventClassPrepare ClassPrepare;
973 /* 57 : VM Start Event */
974 jvmtiEventVMStart VMStart;
975 /* 58 : Exception */
976 jvmtiEventException Exception;
977 /* 59 : Exception Catch */
978 jvmtiEventExceptionCatch ExceptionCatch;
979 /* 60 : Single Step */
980 jvmtiEventSingleStep SingleStep;
981 /* 61 : Frame Pop */
982 jvmtiEventFramePop FramePop;
983 /* 62 : Breakpoint */
984 jvmtiEventBreakpoint Breakpoint;
985 /* 63 : Field Access */
986 jvmtiEventFieldAccess FieldAccess;
987 /* 64 : Field Modification */
988 jvmtiEventFieldModification FieldModification;
989 /* 65 : Method Entry */
990 jvmtiEventMethodEntry MethodEntry;
991 /* 66 : Method Exit */
992 jvmtiEventMethodExit MethodExit;
993 /* 67 : Native Method Bind */
994 jvmtiEventNativeMethodBind NativeMethodBind;
995 /* 68 : Compiled Method Load */
996 jvmtiEventCompiledMethodLoad CompiledMethodLoad;
997 /* 69 : Compiled Method Unload */
998 jvmtiEventCompiledMethodUnload CompiledMethodUnload;
999 /* 70 : Dynamic Code Generated */
1000 jvmtiEventDynamicCodeGenerated DynamicCodeGenerated;
1001 /* 71 : Data Dump Request */
1002 jvmtiEventDataDumpRequest DataDumpRequest;
1003 /* 72 */
1004 jvmtiEventReserved reserved72;
1005 /* 73 : Monitor Wait */
1006 jvmtiEventMonitorWait MonitorWait;
1007 /* 74 : Monitor Waited */
1008 jvmtiEventMonitorWaited MonitorWaited;
1009 /* 75 : Monitor Contended Enter */
1010 jvmtiEventMonitorContendedEnter MonitorContendedEnter;
1011 /* 76 : Monitor Contended Entered */
1012 jvmtiEventMonitorContendedEntered MonitorContendedEntered;
1013 /* 77 */
1014 jvmtiEventReserved reserved77;
1015 /* 78 */
1016 jvmtiEventReserved reserved78;
1017 /* 79 */
1018 jvmtiEventReserved reserved79;
1019 /* 80 : Resource Exhausted */
1020 jvmtiEventResourceExhausted ResourceExhausted;
1021 /* 81 : Garbage Collection Start */
1022 jvmtiEventGarbageCollectionStart GarbageCollectionStart;
1023 /* 82 : Garbage Collection Finish */
1024 jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;
1025 /* 83 : Object Free */
1026 jvmtiEventObjectFree ObjectFree;
1027 /* 84 : VM Object Allocation */
1028 jvmtiEventVMObjectAlloc VMObjectAlloc;
1029 /* 85 */
1030 jvmtiEventReserved reserved85;
1031 /* 86 : Sampled Object Allocation */
1032 jvmtiEventSampledObjectAlloc SampledObjectAlloc;
1033 /* 87 : Virtual Thread Start */
1034 jvmtiEventVirtualThreadStart VirtualThreadStart;
1035 /* 88 : Virtual Thread End */
1036 jvmtiEventVirtualThreadEnd VirtualThreadEnd;
1037} jvmtiEventCallbacks;
1038
1039
1040 /* Function Interface */
1041
1042typedef struct jvmtiInterface_1_ {
1043
1044 /* 1 : RESERVED */
1045 void *reserved1;
1046
1047 /* 2 : Set Event Notification Mode */
1048 jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env,
1049 jvmtiEventMode mode,
1050 jvmtiEvent event_type,
1051 jthread event_thread,
1052 ...);
1053
1054 /* 3 : Get All Modules */
1055 jvmtiError (JNICALL *GetAllModules) (jvmtiEnv* env,
1056 jint* module_count_ptr,
1057 jobject** modules_ptr);
1058
1059 /* 4 : Get All Threads */
1060 jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env,
1061 jint* threads_count_ptr,
1062 jthread** threads_ptr);
1063
1064 /* 5 : Suspend Thread */
1065 jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env,
1066 jthread thread);
1067
1068 /* 6 : Resume Thread */
1069 jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env,
1070 jthread thread);
1071
1072 /* 7 : Stop Thread */
1073 jvmtiError (JNICALL *StopThread) (jvmtiEnv* env,
1074 jthread thread,
1075 jobject exception);
1076
1077 /* 8 : Interrupt Thread */
1078 jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env,
1079 jthread thread);
1080
1081 /* 9 : Get Thread Info */
1082 jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env,
1083 jthread thread,
1084 jvmtiThreadInfo* info_ptr);
1085
1086 /* 10 : Get Owned Monitor Info */
1087 jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env,
1088 jthread thread,
1089 jint* owned_monitor_count_ptr,
1090 jobject** owned_monitors_ptr);
1091
1092 /* 11 : Get Current Contended Monitor */
1093 jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env,
1094 jthread thread,
1095 jobject* monitor_ptr);
1096
1097 /* 12 : Run Agent Thread */
1098 jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env,
1099 jthread thread,
1100 jvmtiStartFunction proc,
1101 const void* arg,
1102 jint priority);
1103
1104 /* 13 : Get Top Thread Groups */
1105 jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env,
1106 jint* group_count_ptr,
1107 jthreadGroup** groups_ptr);
1108
1109 /* 14 : Get Thread Group Info */
1110 jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env,
1111 jthreadGroup group,
1112 jvmtiThreadGroupInfo* info_ptr);
1113
1114 /* 15 : Get Thread Group Children */
1115 jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv* env,
1116 jthreadGroup group,
1117 jint* thread_count_ptr,
1118 jthread** threads_ptr,
1119 jint* group_count_ptr,
1120 jthreadGroup** groups_ptr);
1121
1122 /* 16 : Get Frame Count */
1123 jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env,
1124 jthread thread,
1125 jint* count_ptr);
1126
1127 /* 17 : Get Thread State */
1128 jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env,
1129 jthread thread,
1130 jint* thread_state_ptr);
1131
1132 /* 18 : Get Current Thread */
1133 jvmtiError (JNICALL *GetCurrentThread) (jvmtiEnv* env,
1134 jthread* thread_ptr);
1135
1136 /* 19 : Get Frame Location */
1137 jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env,
1138 jthread thread,
1139 jint depth,
1140 jmethodID* method_ptr,
1141 jlocation* location_ptr);
1142
1143 /* 20 : Notify Frame Pop */
1144 jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env,
1145 jthread thread,
1146 jint depth);
1147
1148 /* 21 : Get Local Variable - Object */
1149 jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env,
1150 jthread thread,
1151 jint depth,
1152 jint slot,
1153 jobject* value_ptr);
1154
1155 /* 22 : Get Local Variable - Int */
1156 jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env,
1157 jthread thread,
1158 jint depth,
1159 jint slot,
1160 jint* value_ptr);
1161
1162 /* 23 : Get Local Variable - Long */
1163 jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env,
1164 jthread thread,
1165 jint depth,
1166 jint slot,
1167 jlong* value_ptr);
1168
1169 /* 24 : Get Local Variable - Float */
1170 jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env,
1171 jthread thread,
1172 jint depth,
1173 jint slot,
1174 jfloat* value_ptr);
1175
1176 /* 25 : Get Local Variable - Double */
1177 jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env,
1178 jthread thread,
1179 jint depth,
1180 jint slot,
1181 jdouble* value_ptr);
1182
1183 /* 26 : Set Local Variable - Object */
1184 jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env,
1185 jthread thread,
1186 jint depth,
1187 jint slot,
1188 jobject value);
1189
1190 /* 27 : Set Local Variable - Int */
1191 jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env,
1192 jthread thread,
1193 jint depth,
1194 jint slot,
1195 jint value);
1196
1197 /* 28 : Set Local Variable - Long */
1198 jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env,
1199 jthread thread,
1200 jint depth,
