JAL-1988 JAL-3130 Now we're in Java 11 land, using jdeps and jlink have made a pared...
[jalview.git] / jalview_java / include / jvmti.h
1 /*
2  * Copyright (c) 2002, 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.  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
36 extern "C" {
37 #endif
38
39 enum {
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
47     JVMTI_VERSION = 0x30000000 + (11 * 0x10000) + (0 * 0x100) + 0  /* version: 11.0.0 */
48 };
49
50 JNIEXPORT jint JNICALL
51 Agent_OnLoad(JavaVM *vm, char *options, void *reserved);
52
53 JNIEXPORT jint JNICALL
54 Agent_OnAttach(JavaVM* vm, char* options, void* reserved);
55
56 JNIEXPORT void JNICALL
57 Agent_OnUnload(JavaVM *vm);
58
59     /* Forward declaration of the environment */
60
61 struct _jvmtiEnv;
62
63 struct jvmtiInterface_1_;
64
65 #ifdef __cplusplus
66 typedef _jvmtiEnv jvmtiEnv;
67 #else
68 typedef const struct jvmtiInterface_1_ *jvmtiEnv;
69 #endif /* __cplusplus */
70
71 /* Derived Base Types */
72
73 typedef jobject jthread;
74 typedef jobject jthreadGroup;
75 typedef jlong jlocation;
76 struct _jrawMonitorID;
77 typedef struct _jrawMonitorID *jrawMonitorID;
78 typedef struct JNINativeInterface_ jniNativeInterface;
79
80     /* Constants */
81
82
83     /* Thread State Flags */
84
85 enum {
86     JVMTI_THREAD_STATE_ALIVE = 0x0001,
87     JVMTI_THREAD_STATE_TERMINATED = 0x0002,
88     JVMTI_THREAD_STATE_RUNNABLE = 0x0004,
89     JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400,
90     JVMTI_THREAD_STATE_WAITING = 0x0080,
91     JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010,
92     JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020,
93     JVMTI_THREAD_STATE_SLEEPING = 0x0040,
94     JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100,
95     JVMTI_THREAD_STATE_PARKED = 0x0200,
96     JVMTI_THREAD_STATE_SUSPENDED = 0x100000,
97     JVMTI_THREAD_STATE_INTERRUPTED = 0x200000,
98     JVMTI_THREAD_STATE_IN_NATIVE = 0x400000,
99     JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000,
100     JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000,
101     JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000
102 };
103
104     /* java.lang.Thread.State Conversion Masks */
105
106 enum {
107     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,
108     JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0,
109     JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED,
110     JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE,
111     JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER,
112     JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY,
113     JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT
114 };
115
116     /* Thread Priority Constants */
117
118 enum {
119     JVMTI_THREAD_MIN_PRIORITY = 1,
120     JVMTI_THREAD_NORM_PRIORITY = 5,
121     JVMTI_THREAD_MAX_PRIORITY = 10
122 };
123
124     /* Heap Filter Flags */
125
126 enum {
127     JVMTI_HEAP_FILTER_TAGGED = 0x4,
128     JVMTI_HEAP_FILTER_UNTAGGED = 0x8,
129     JVMTI_HEAP_FILTER_CLASS_TAGGED = 0x10,
130     JVMTI_HEAP_FILTER_CLASS_UNTAGGED = 0x20
131 };
132
133     /* Heap Visit Control Flags */
134
135 enum {
136     JVMTI_VISIT_OBJECTS = 0x100,
137     JVMTI_VISIT_ABORT = 0x8000
138 };
139
140     /* Heap Reference Enumeration */
141
142 typedef enum {
143     JVMTI_HEAP_REFERENCE_CLASS = 1,
144     JVMTI_HEAP_REFERENCE_FIELD = 2,
145     JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT = 3,
146     JVMTI_HEAP_REFERENCE_CLASS_LOADER = 4,
147     JVMTI_HEAP_REFERENCE_SIGNERS = 5,
148     JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN = 6,
149     JVMTI_HEAP_REFERENCE_INTERFACE = 7,
150     JVMTI_HEAP_REFERENCE_STATIC_FIELD = 8,
151     JVMTI_HEAP_REFERENCE_CONSTANT_POOL = 9,
152     JVMTI_HEAP_REFERENCE_SUPERCLASS = 10,
153     JVMTI_HEAP_REFERENCE_JNI_GLOBAL = 21,
154     JVMTI_HEAP_REFERENCE_SYSTEM_CLASS = 22,
155     JVMTI_HEAP_REFERENCE_MONITOR = 23,
156     JVMTI_HEAP_REFERENCE_STACK_LOCAL = 24,
157     JVMTI_HEAP_REFERENCE_JNI_LOCAL = 25,
158     JVMTI_HEAP_REFERENCE_THREAD = 26,
159     JVMTI_HEAP_REFERENCE_OTHER = 27
160 } jvmtiHeapReferenceKind;
161
162     /* Primitive Type Enumeration */
163
164 typedef enum {
165     JVMTI_PRIMITIVE_TYPE_BOOLEAN = 90,
166     JVMTI_PRIMITIVE_TYPE_BYTE = 66,
167     JVMTI_PRIMITIVE_TYPE_CHAR = 67,
168     JVMTI_PRIMITIVE_TYPE_SHORT = 83,
169     JVMTI_PRIMITIVE_TYPE_INT = 73,
170     JVMTI_PRIMITIVE_TYPE_LONG = 74,
171     JVMTI_PRIMITIVE_TYPE_FLOAT = 70,
172     JVMTI_PRIMITIVE_TYPE_DOUBLE = 68
173 } jvmtiPrimitiveType;
174
175     /* Heap Object Filter Enumeration */
176
177 typedef enum {
178     JVMTI_HEAP_OBJECT_TAGGED = 1,
179     JVMTI_HEAP_OBJECT_UNTAGGED = 2,
180     JVMTI_HEAP_OBJECT_EITHER = 3
181 } jvmtiHeapObjectFilter;
182
183     /* Heap Root Kind Enumeration */
184
185 typedef enum {
186     JVMTI_HEAP_ROOT_JNI_GLOBAL = 1,
187     JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2,
188     JVMTI_HEAP_ROOT_MONITOR = 3,
189     JVMTI_HEAP_ROOT_STACK_LOCAL = 4,
190     JVMTI_HEAP_ROOT_JNI_LOCAL = 5,
191     JVMTI_HEAP_ROOT_THREAD = 6,
192     JVMTI_HEAP_ROOT_OTHER = 7
193 } jvmtiHeapRootKind;
194
195     /* Object Reference Enumeration */
196
197 typedef enum {
198     JVMTI_REFERENCE_CLASS = 1,
199     JVMTI_REFERENCE_FIELD = 2,
200     JVMTI_REFERENCE_ARRAY_ELEMENT = 3,
201     JVMTI_REFERENCE_CLASS_LOADER = 4,
202     JVMTI_REFERENCE_SIGNERS = 5,
203     JVMTI_REFERENCE_PROTECTION_DOMAIN = 6,
204     JVMTI_REFERENCE_INTERFACE = 7,
205     JVMTI_REFERENCE_STATIC_FIELD = 8,
206     JVMTI_REFERENCE_CONSTANT_POOL = 9
207 } jvmtiObjectReferenceKind;
208
209     /* Iteration Control Enumeration */
210
211 typedef enum {
212     JVMTI_ITERATION_CONTINUE = 1,
213     JVMTI_ITERATION_IGNORE = 2,
214     JVMTI_ITERATION_ABORT = 0
215 } jvmtiIterationControl;
216
217     /* Class Status Flags */
218
219 enum {
220     JVMTI_CLASS_STATUS_VERIFIED = 1,
221     JVMTI_CLASS_STATUS_PREPARED = 2,
222     JVMTI_CLASS_STATUS_INITIALIZED = 4,
223     JVMTI_CLASS_STATUS_ERROR = 8,
224     JVMTI_CLASS_STATUS_ARRAY = 16,
225     JVMTI_CLASS_STATUS_PRIMITIVE = 32
226 };
227
228     /* Event Enable/Disable */
229
230 typedef enum {
231     JVMTI_ENABLE = 1,
232     JVMTI_DISABLE = 0
233 } jvmtiEventMode;
234
235     /* Extension Function/Event Parameter Types */
236
237 typedef enum {
238     JVMTI_TYPE_JBYTE = 101,
239     JVMTI_TYPE_JCHAR = 102,
240     JVMTI_TYPE_JSHORT = 103,
241     JVMTI_TYPE_JINT = 104,
242     JVMTI_TYPE_JLONG = 105,
243     JVMTI_TYPE_JFLOAT = 106,
244     JVMTI_TYPE_JDOUBLE = 107,
245     JVMTI_TYPE_JBOOLEAN = 108,
246     JVMTI_TYPE_JOBJECT = 109,
247     JVMTI_TYPE_JTHREAD = 110,
248     JVMTI_TYPE_JCLASS = 111,
249     JVMTI_TYPE_JVALUE = 112,
250     JVMTI_TYPE_JFIELDID = 113,
251     JVMTI_TYPE_JMETHODID = 114,
252     JVMTI_TYPE_CCHAR = 115,
253     JVMTI_TYPE_CVOID = 116,
254     JVMTI_TYPE_JNIENV = 117
255 } jvmtiParamTypes;
256
257     /* Extension Function/Event Parameter Kinds */
258
259 typedef enum {
260     JVMTI_KIND_IN = 91,
261     JVMTI_KIND_IN_PTR = 92,
262     JVMTI_KIND_IN_BUF = 93,
263     JVMTI_KIND_ALLOC_BUF = 94,
264     JVMTI_KIND_ALLOC_ALLOC_BUF = 95,
265     JVMTI_KIND_OUT = 96,
266     JVMTI_KIND_OUT_BUF = 97
267 } jvmtiParamKind;
268
269     /* Timer Kinds */
270
271 typedef enum {
272     JVMTI_TIMER_USER_CPU = 30,
273     JVMTI_TIMER_TOTAL_CPU = 31,
274     JVMTI_TIMER_ELAPSED = 32
275 } jvmtiTimerKind;
276
277     /* Phases of execution */
278
279 typedef enum {
280     JVMTI_PHASE_ONLOAD = 1,
281     JVMTI_PHASE_PRIMORDIAL = 2,
282     JVMTI_PHASE_START = 6,
283     JVMTI_PHASE_LIVE = 4,
284     JVMTI_PHASE_DEAD = 8
285 } jvmtiPhase;
286
287     /* Version Interface Types */
288
289 enum {
290     JVMTI_VERSION_INTERFACE_JNI = 0x00000000,
291     JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000
292 };
293
294     /* Version Masks */
295
296 enum {
297     JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000,
298     JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000,
299     JVMTI_VERSION_MASK_MINOR = 0x0000FF00,
300     JVMTI_VERSION_MASK_MICRO = 0x000000FF
301 };
302
303     /* Version Shifts */
304
305 enum {
306     JVMTI_VERSION_SHIFT_MAJOR = 16,
307     JVMTI_VERSION_SHIFT_MINOR = 8,
308     JVMTI_VERSION_SHIFT_MICRO = 0
309 };
310
311     /* Verbose Flag Enumeration */
312
313 typedef enum {
314     JVMTI_VERBOSE_OTHER = 0,
315     JVMTI_VERBOSE_GC = 1,
316     JVMTI_VERBOSE_CLASS = 2,
317     JVMTI_VERBOSE_JNI = 4
318 } jvmtiVerboseFlag;
319
320     /* JLocation Format Enumeration */
321
322 typedef enum {
323     JVMTI_JLOCATION_JVMBCI = 1,
324     JVMTI_JLOCATION_MACHINEPC = 2,
325     JVMTI_JLOCATION_OTHER = 0
326 } jvmtiJlocationFormat;
327
328     /* Resource Exhaustion Flags */
329
330 enum {
331     JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR = 0x0001,
332     JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP = 0x0002,
333     JVMTI_RESOURCE_EXHAUSTED_THREADS = 0x0004
334 };
335
336     /* Errors */
337
338 typedef enum {
339     JVMTI_ERROR_NONE = 0,
340     JVMTI_ERROR_INVALID_THREAD = 10,
341     JVMTI_ERROR_INVALID_THREAD_GROUP = 11,
342     JVMTI_ERROR_INVALID_PRIORITY = 12,
343     JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,
344     JVMTI_ERROR_THREAD_SUSPENDED = 14,
345     JVMTI_ERROR_THREAD_NOT_ALIVE = 15,
346     JVMTI_ERROR_INVALID_OBJECT = 20,
347     JVMTI_ERROR_INVALID_CLASS = 21,
348     JVMTI_ERROR_CLASS_NOT_PREPARED = 22,
349     JVMTI_ERROR_INVALID_METHODID = 23,
350     JVMTI_ERROR_INVALID_LOCATION = 24,
351     JVMTI_ERROR_INVALID_FIELDID = 25,
352     JVMTI_ERROR_INVALID_MODULE = 26,
353     JVMTI_ERROR_NO_MORE_FRAMES = 31,
354     JVMTI_ERROR_OPAQUE_FRAME = 32,
355     JVMTI_ERROR_TYPE_MISMATCH = 34,
356     JVMTI_ERROR_INVALID_SLOT = 35,
357     JVMTI_ERROR_DUPLICATE = 40,
358     JVMTI_ERROR_NOT_FOUND = 41,
359     JVMTI_ERROR_INVALID_MONITOR = 50,
360     JVMTI_ERROR_NOT_MONITOR_OWNER = 51,
361     JVMTI_ERROR_INTERRUPT = 52,
362     JVMTI_ERROR_INVALID_CLASS_FORMAT = 60,
363     JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61,
364     JVMTI_ERROR_FAILS_VERIFICATION = 62,
365     JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63,
366     JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64,
367     JVMTI_ERROR_INVALID_TYPESTATE = 65,
368     JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66,
369     JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67,
370     JVMTI_ERROR_UNSUPPORTED_VERSION = 68,
371     JVMTI_ERROR_NAMES_DONT_MATCH = 69,
372     JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,
373     JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,
374     JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_ATTRIBUTE_CHANGED = 72,
375     JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,
376     JVMTI_ERROR_UNMODIFIABLE_MODULE = 80,
377     JVMTI_ERROR_NOT_AVAILABLE = 98,
378     JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,
379     JVMTI_ERROR_NULL_POINTER = 100,
380     JVMTI_ERROR_ABSENT_INFORMATION = 101,
381     JVMTI_ERROR_INVALID_EVENT_TYPE = 102,
382     JVMTI_ERROR_ILLEGAL_ARGUMENT = 103,
383     JVMTI_ERROR_NATIVE_METHOD = 104,
384     JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED = 106,
385     JVMTI_ERROR_OUT_OF_MEMORY = 110,
386     JVMTI_ERROR_ACCESS_DENIED = 111,
387     JVMTI_ERROR_WRONG_PHASE = 112,
388     JVMTI_ERROR_INTERNAL = 113,
389     JVMTI_ERROR_UNATTACHED_THREAD = 115,
390     JVMTI_ERROR_INVALID_ENVIRONMENT = 116,
391     JVMTI_ERROR_MAX = 116
392 } jvmtiError;
393
394     /* Event IDs */
395
396 typedef enum {
397     JVMTI_MIN_EVENT_TYPE_VAL = 50,
398     JVMTI_EVENT_VM_INIT = 50,
399     JVMTI_EVENT_VM_DEATH = 51,
400     JVMTI_EVENT_THREAD_START = 52,
401     JVMTI_EVENT_THREAD_END = 53,
402     JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54,
403     JVMTI_EVENT_CLASS_LOAD = 55,
404     JVMTI_EVENT_CLASS_PREPARE = 56,
405     JVMTI_EVENT_VM_START = 57,
406     JVMTI_EVENT_EXCEPTION = 58,
407     JVMTI_EVENT_EXCEPTION_CATCH = 59,
408     JVMTI_EVENT_SINGLE_STEP = 60,
409     JVMTI_EVENT_FRAME_POP = 61,
410     JVMTI_EVENT_BREAKPOINT = 62,
411     JVMTI_EVENT_FIELD_ACCESS = 63,
412     JVMTI_EVENT_FIELD_MODIFICATION = 64,
413     JVMTI_EVENT_METHOD_ENTRY = 65,
414     JVMTI_EVENT_METHOD_EXIT = 66,
415     JVMTI_EVENT_NATIVE_METHOD_BIND = 67,
416     JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,
417     JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,
418     JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,
419     JVMTI_EVENT_DATA_DUMP_REQUEST = 71,
420     JVMTI_EVENT_MONITOR_WAIT = 73,
421     JVMTI_EVENT_MONITOR_WAITED = 74,
422     JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,
423     JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,
424     JVMTI_EVENT_RESOURCE_EXHAUSTED = 80,
425     JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,
426     JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,
427     JVMTI_EVENT_OBJECT_FREE = 83,
428     JVMTI_EVENT_VM_OBJECT_ALLOC = 84,
429     JVMTI_EVENT_SAMPLED_OBJECT_ALLOC = 86,
430     JVMTI_MAX_EVENT_TYPE_VAL = 86
431 } jvmtiEvent;
432
433
434     /* Pre-Declarations */
435 struct _jvmtiThreadInfo;
436 typedef struct _jvmtiThreadInfo jvmtiThreadInfo;
437 struct _jvmtiMonitorStackDepthInfo;
438 typedef struct _jvmtiMonitorStackDepthInfo jvmtiMonitorStackDepthInfo;
439 struct _jvmtiThreadGroupInfo;
440 typedef struct _jvmtiThreadGroupInfo jvmtiThreadGroupInfo;
441 struct _jvmtiFrameInfo;
442 typedef struct _jvmtiFrameInfo jvmtiFrameInfo;
443 struct _jvmtiStackInfo;
444 typedef struct _jvmtiStackInfo jvmtiStackInfo;
445 struct _jvmtiHeapReferenceInfoField;
446 typedef struct _jvmtiHeapReferenceInfoField jvmtiHeapReferenceInfoField;
447 struct _jvmtiHeapReferenceInfoArray;
448 typedef struct _jvmtiHeapReferenceInfoArray jvmtiHeapReferenceInfoArray;
449 struct _jvmtiHeapReferenceInfoConstantPool;
450 typedef struct _jvmtiHeapReferenceInfoConstantPool jvmtiHeapReferenceInfoConstantPool;
451 struct _jvmtiHeapReferenceInfoStackLocal;
452 typedef struct _jvmtiHeapReferenceInfoStackLocal jvmtiHeapReferenceInfoStackLocal;
453 struct _jvmtiHeapReferenceInfoJniLocal;
454 typedef struct _jvmtiHeapReferenceInfoJniLocal jvmtiHeapReferenceInfoJniLocal;
455 struct _jvmtiHeapReferenceInfoReserved;
456 typedef struct _jvmtiHeapReferenceInfoReserved jvmtiHeapReferenceInfoReserved;
457 union _jvmtiHeapReferenceInfo;
458 typedef union _jvmtiHeapReferenceInfo jvmtiHeapReferenceInfo;
459 struct _jvmtiHeapCallbacks;
460 typedef struct _jvmtiHeapCallbacks jvmtiHeapCallbacks;
461 struct _jvmtiClassDefinition;
462 typedef struct _jvmtiClassDefinition jvmtiClassDefinition;
463 struct _jvmtiMonitorUsage;
464 typedef struct _jvmtiMonitorUsage jvmtiMonitorUsage;
465 struct _jvmtiLineNumberEntry;
466 typedef struct _jvmtiLineNumberEntry jvmtiLineNumberEntry;
467 struct _jvmtiLocalVariableEntry;
468 typedef struct _jvmtiLocalVariableEntry jvmtiLocalVariableEntry;
469 struct _jvmtiParamInfo;
470 typedef struct _jvmtiParamInfo jvmtiParamInfo;
471 struct _jvmtiExtensionFunctionInfo;
472 typedef struct _jvmtiExtensionFunctionInfo jvmtiExtensionFunctionInfo;
473 struct _jvmtiExtensionEventInfo;
474 typedef struct _jvmtiExtensionEventInfo jvmtiExtensionEventInfo;
475 struct _jvmtiTimerInfo;
476 typedef struct _jvmtiTimerInfo jvmtiTimerInfo;
477 struct _jvmtiAddrLocationMap;
478 typedef struct _jvmtiAddrLocationMap jvmtiAddrLocationMap;
479
480     /* Function Types */
481
482 typedef void (JNICALL *jvmtiStartFunction)
483     (jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg);
484
485 typedef jint (JNICALL *jvmtiHeapIterationCallback)
486     (jlong class_tag, jlong size, jlong* tag_ptr, jint length, void* user_data);
487
488 typedef jint (JNICALL *jvmtiHeapReferenceCallback)
489     (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);
490
491 typedef jint (JNICALL *jvmtiPrimitiveFieldCallback)
492     (jvmtiHeapReferenceKind kind, const jvmtiHeapReferenceInfo* info, jlong object_class_tag, jlong* object_tag_ptr, jvalue value, jvmtiPrimitiveType value_type, void* user_data);
493
494 typedef jint (JNICALL *jvmtiArrayPrimitiveValueCallback)
495     (jlong class_tag, jlong size, jlong* tag_ptr, jint element_count, jvmtiPrimitiveType element_type, const void* elements, void* user_data);
496
497 typedef jint (JNICALL *jvmtiStringPrimitiveValueCallback)
498     (jlong class_tag, jlong size, jlong* tag_ptr, const jchar* value, jint value_length, void* user_data);
499
500 typedef jint (JNICALL *jvmtiReservedCallback)
501     ();
502
503 typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback)
504     (jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);
505
506 typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback)
507     (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);
508
509 typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback)
510     (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_data);
511
512 typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback)
513     (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data);
514
515 typedef jvmtiError (JNICALL *jvmtiExtensionFunction)
516     (jvmtiEnv* jvmti_env,  ...);
517
518 typedef void (JNICALL *jvmtiExtensionEvent)
519     (jvmtiEnv* jvmti_env,  ...);
520
521
522     /* Structure Types */
523 struct _jvmtiThreadInfo {
524     char* name;
525     jint priority;
526     jboolean is_daemon;
527     jthreadGroup thread_group;
528     jobject context_class_loader;
529 };
530 struct _jvmtiMonitorStackDepthInfo {
531     jobject monitor;
532     jint stack_depth;
533 };
534 struct _jvmtiThreadGroupInfo {
535     jthreadGroup parent;
536     char* name;
537     jint max_priority;
538     jboolean is_daemon;
539 };
540 struct _jvmtiFrameInfo {
541     jmethodID method;
542     jlocation location;
543 };
544 struct _jvmtiStackInfo {
545     jthread thread;
546     jint state;
547     jvmtiFrameInfo* frame_buffer;
548     jint frame_count;
549 };
550 struct _jvmtiHeapReferenceInfoField {
551     jint index;
552 };
553 struct _jvmtiHeapReferenceInfoArray {
554     jint index;
555 };
556 struct _jvmtiHeapReferenceInfoConstantPool {
557     jint index;
558 };
559 struct _jvmtiHeapReferenceInfoStackLocal {
560     jlong thread_tag;
561     jlong thread_id;
562     jint depth;
563     jmethodID method;
564     jlocation location;
565     jint slot;
566 };
567 struct _jvmtiHeapReferenceInfoJniLocal {
568     jlong thread_tag;
569     jlong thread_id;
570     jint depth;
571     jmethodID method;
572 };
573 struct _jvmtiHeapReferenceInfoReserved {
574     jlong reserved1;
575     jlong reserved2;
576     jlong reserved3;
577     jlong reserved4;
578     jlong reserved5;
579     jlong reserved6;
580     jlong reserved7;
581     jlong reserved8;
582 };
583 union _jvmtiHeapReferenceInfo {
584     jvmtiHeapReferenceInfoField field;
585     jvmtiHeapReferenceInfoArray array;
586     jvmtiHeapReferenceInfoConstantPool constant_pool;
587     jvmtiHeapReferenceInfoStackLocal stack_local;
588     jvmtiHeapReferenceInfoJniLocal jni_local;
589     jvmtiHeapReferenceInfoReserved other;
590 };
591 struct _jvmtiHeapCallbacks {
592     jvmtiHeapIterationCallback heap_iteration_callback;
593     jvmtiHeapReferenceCallback heap_reference_callback;
594     jvmtiPrimitiveFieldCallback primitive_field_callback;
595     jvmtiArrayPrimitiveValueCallback array_primitive_value_callback;
596     jvmtiStringPrimitiveValueCallback string_primitive_value_callback;
597     jvmtiReservedCallback reserved5;
598     jvmtiReservedCallback reserved6;
599     jvmtiReservedCallback reserved7;
600     jvmtiReservedCallback reserved8;
601     jvmtiReservedCallback reserved9;
602     jvmtiReservedCallback reserved10;
603     jvmtiReservedCallback reserved11;
604     jvmtiReservedCallback reserved12;
605     jvmtiReservedCallback reserved13;
606     jvmtiReservedCallback reserved14;
607     jvmtiReservedCallback reserved15;
608 };
609 struct _jvmtiClassDefinition {
610     jclass klass;
611     jint class_byte_count;
612     const unsigned char* class_bytes;
613 };
614 struct _jvmtiMonitorUsage {
615     jthread owner;
616     jint entry_count;
617     jint waiter_count;
618     jthread* waiters;
619     jint notify_waiter_count;
620     jthread* notify_waiters;
621 };
622 struct _jvmtiLineNumberEntry {
623     jlocation start_location;
624     jint line_number;
625 };
626 struct _jvmtiLocalVariableEntry {
627     jlocation start_location;
628     jint length;
629     char* name;
630     char* signature;
631     char* generic_signature;
632     jint slot;
633 };
634 struct _jvmtiParamInfo {
635     char* name;
636     jvmtiParamKind kind;
637     jvmtiParamTypes base_type;
638     jboolean null_ok;
639 };
640 struct _jvmtiExtensionFunctionInfo {
641     jvmtiExtensionFunction func;
642     char* id;
643     char* short_description;
644     jint param_count;
645     jvmtiParamInfo* params;
646     jint error_count;
647     jvmtiError* errors;
648 };
649 struct _jvmtiExtensionEventInfo {
650     jint extension_event_index;
651     char* id;
652     char* short_description;
653     jint param_count;
654     jvmtiParamInfo* params;
655 };
656 struct _jvmtiTimerInfo {
657     jlong max_value;
658     jboolean may_skip_forward;
659     jboolean may_skip_backward;
660     jvmtiTimerKind kind;
661     jlong reserved1;
662     jlong reserved2;
663 };
664 struct _jvmtiAddrLocationMap {
665     const void* start_address;
666     jlocation location;
667 };
668
669 typedef struct {
670     unsigned int can_tag_objects : 1;
671     unsigned int can_generate_field_modification_events : 1;
672     unsigned int can_generate_field_access_events : 1;
673     unsigned int can_get_bytecodes : 1;
674     unsigned int can_get_synthetic_attribute : 1;
675     unsigned int can_get_owned_monitor_info : 1;
676     unsigned int can_get_current_contended_monitor : 1;
677     unsigned int can_get_monitor_info : 1;
678     unsigned int can_pop_frame : 1;
679     unsigned int can_redefine_classes : 1;
680     unsigned int can_signal_thread : 1;
681     unsigned int can_get_source_file_name : 1;
682     unsigned int can_get_line_numbers : 1;
683     unsigned int can_get_source_debug_extension : 1;
684     unsigned int can_access_local_variables : 1;
685     unsigned int can_maintain_original_method_order : 1;
686     unsigned int can_generate_single_step_events : 1;
687     unsigned int can_generate_exception_events : 1;
688     unsigned int can_generate_frame_pop_events : 1;
689     unsigned int can_generate_breakpoint_events : 1;
690     unsigned int can_suspend : 1;
691     unsigned int can_redefine_any_class : 1;
692     unsigned int can_get_current_thread_cpu_time : 1;
693     unsigned int can_get_thread_cpu_time : 1;
694     unsigned int can_generate_method_entry_events : 1;
695     unsigned int can_generate_method_exit_events : 1;
696     unsigned int can_generate_all_class_hook_events : 1;
697     unsigned int can_generate_compiled_method_load_events : 1;
698     unsigned int can_generate_monitor_events : 1;
699     unsigned int can_generate_vm_object_alloc_events : 1;
700     unsigned int can_generate_native_method_bind_events : 1;
701     unsigned int can_generate_garbage_collection_events : 1;
702     unsigned int can_generate_object_free_events : 1;
703     unsigned int can_force_early_return : 1;
704     unsigned int can_get_owned_monitor_stack_depth_info : 1;
705     unsigned int can_get_constant_pool : 1;
706     unsigned int can_set_native_method_prefix : 1;
707     unsigned int can_retransform_classes : 1;
708     unsigned int can_retransform_any_class : 1;
709     unsigned int can_generate_resource_exhaustion_heap_events : 1;
710     unsigned int can_generate_resource_exhaustion_threads_events : 1;
711     unsigned int can_generate_early_vmstart : 1;
712     unsigned int can_generate_early_class_hook_events : 1;
713     unsigned int can_generate_sampled_object_alloc_events : 1;
714     unsigned int : 4;
715     unsigned int : 16;
716     unsigned int : 16;
717     unsigned int : 16;
718     unsigned int : 16;
719     unsigned int : 16;
720 } jvmtiCapabilities;
721
722
723     /* Event Definitions */
724
725 typedef void (JNICALL *jvmtiEventReserved)(void);
726
727
728 typedef void (JNICALL *jvmtiEventBreakpoint)
729     (jvmtiEnv *jvmti_env,
730      JNIEnv* jni_env,
731      jthread thread,
732      jmethodID method,
733      jlocation location);
734
735 typedef void (JNICALL *jvmtiEventClassFileLoadHook)
736     (jvmtiEnv *jvmti_env,
737      JNIEnv* jni_env,
738      jclass class_being_redefined,
739      jobject loader,
740      const char* name,
741      jobject protection_domain,
742      jint class_data_len,
743      const unsigned char* class_data,
744      jint* new_class_data_len,
745      unsigned char** new_class_data);
746
747 typedef void (JNICALL *jvmtiEventClassLoad)
748     (jvmtiEnv *jvmti_env,
749      JNIEnv* jni_env,
750      jthread thread,
751      jclass klass);
752
753 typedef void (JNICALL *jvmtiEventClassPrepare)
754     (jvmtiEnv *jvmti_env,
755      JNIEnv* jni_env,
756      jthread thread,
757      jclass klass);
758
759 typedef void (JNICALL *jvmtiEventCompiledMethodLoad)
760     (jvmtiEnv *jvmti_env,
761      jmethodID method,
762      jint code_size,
763      const void* code_addr,
764      jint map_length,
765      const jvmtiAddrLocationMap* map,
766      const void* compile_info);
767
768 typedef void (JNICALL *jvmtiEventCompiledMethodUnload)
769     (jvmtiEnv *jvmti_env,
770      jmethodID method,
771      const void* code_addr);
772
773 typedef void (JNICALL *jvmtiEventDataDumpRequest)
774     (jvmtiEnv *jvmti_env);
775
776 typedef void (JNICALL *jvmtiEventDynamicCodeGenerated)
777     (jvmtiEnv *jvmti_env,
778      const char* name,
779      const void* address,
780      jint length);
781
782 typedef void (JNICALL *jvmtiEventException)
783     (jvmtiEnv *jvmti_env,
784      JNIEnv* jni_env,
785      jthread thread,
786      jmethodID method,
787      jlocation location,
788      jobject exception,
789      jmethodID catch_method,
790      jlocation catch_location);
791
792 typedef void (JNICALL *jvmtiEventExceptionCatch)
793     (jvmtiEnv *jvmti_env,
794      JNIEnv* jni_env,
795      jthread thread,
796      jmethodID method,
797      jlocation location,
798      jobject exception);
799
800 typedef void (JNICALL *jvmtiEventFieldAccess)
801     (jvmtiEnv *jvmti_env,
802      JNIEnv* jni_env,
803      jthread thread,
804      jmethodID method,
805      jlocation location,
806      jclass field_klass,
807      jobject object,
808      jfieldID field);
809
810 typedef void (JNICALL *jvmtiEventFieldModification)
811     (jvmtiEnv *jvmti_env,
812      JNIEnv* jni_env,
813      jthread thread,
814      jmethodID method,
815      jlocation location,
816      jclass field_klass,
817      jobject object,
818      jfieldID field,
819      char signature_type,
820      jvalue new_value);
821
822 typedef void (JNICALL *jvmtiEventFramePop)
823     (jvmtiEnv *jvmti_env,
824      JNIEnv* jni_env,
825      jthread thread,
826      jmethodID method,
827      jboolean was_popped_by_exception);
828
829 typedef void (JNICALL *jvmtiEventGarbageCollectionFinish)
830     (jvmtiEnv *jvmti_env);
831
832 typedef void (JNICALL *jvmtiEventGarbageCollectionStart)
833     (jvmtiEnv *jvmti_env);
834
835 typedef void (JNICALL *jvmtiEventMethodEntry)
836     (jvmtiEnv *jvmti_env,
837      JNIEnv* jni_env,
838      jthread thread,
839      jmethodID method);
840
841 typedef void (JNICALL *jvmtiEventMethodExit)
842     (jvmtiEnv *jvmti_env,
843      JNIEnv* jni_env,
844      jthread thread,
845      jmethodID method,
846      jboolean was_popped_by_exception,
847      jvalue return_value);
848
849 typedef void (JNICALL *jvmtiEventMonitorContendedEnter)
850     (jvmtiEnv *jvmti_env,
851      JNIEnv* jni_env,
852      jthread thread,
853      jobject object);
854
855 typedef void (JNICALL *jvmtiEventMonitorContendedEntered)
856     (jvmtiEnv *jvmti_env,
857      JNIEnv* jni_env,
858      jthread thread,
859      jobject object);
860
861 typedef void (JNICALL *jvmtiEventMonitorWait)
862     (jvmtiEnv *jvmti_env,
863      JNIEnv* jni_env,
864      jthread thread,
865      jobject object,
866      jlong timeout);
867
868 typedef void (JNICALL *jvmtiEventMonitorWaited)
869     (jvmtiEnv *jvmti_env,
870      JNIEnv* jni_env,
871      jthread thread,
872      jobject object,
873      jboolean timed_out);
874
875 typedef void (JNICALL *jvmtiEventNativeMethodBind)
876     (jvmtiEnv *jvmti_env,
877      JNIEnv* jni_env,
878      jthread thread,
879      jmethodID method,
880      void* address,
881      void** new_address_ptr);
882
883 typedef void (JNICALL *jvmtiEventObjectFree)
884     (jvmtiEnv *jvmti_env,
885      jlong tag);
886
887 typedef void (JNICALL *jvmtiEventResourceExhausted)
888     (jvmtiEnv *jvmti_env,
889      JNIEnv* jni_env,
890      jint flags,
891      const void* reserved,
892      const char* description);
893
894 typedef void (JNICALL *jvmtiEventSampledObjectAlloc)
895     (jvmtiEnv *jvmti_env,
896      JNIEnv* jni_env,
897      jthread thread,
898      jobject object,
899      jclass object_klass,
900      jlong size);
901
902 typedef void (JNICALL *jvmtiEventSingleStep)
903     (jvmtiEnv *jvmti_env,
904      JNIEnv* jni_env,
905      jthread thread,
906      jmethodID method,
907      jlocation location);
908
909 typedef void (JNICALL *jvmtiEventThreadEnd)
910     (jvmtiEnv *jvmti_env,
911      JNIEnv* jni_env,
912      jthread thread);
913
914 typedef void (JNICALL *jvmtiEventThreadStart)
915     (jvmtiEnv *jvmti_env,
916      JNIEnv* jni_env,
917      jthread thread);
918
919 typedef void (JNICALL *jvmtiEventVMDeath)
920     (jvmtiEnv *jvmti_env,
921      JNIEnv* jni_env);
922
923 typedef void (JNICALL *jvmtiEventVMInit)
924     (jvmtiEnv *jvmti_env,
925      JNIEnv* jni_env,
926      jthread thread);
927
928 typedef void (JNICALL *jvmtiEventVMObjectAlloc)
929     (jvmtiEnv *jvmti_env,
930      JNIEnv* jni_env,
931      jthread thread,
932      jobject object,
933      jclass object_klass,
934      jlong size);
935
936 typedef void (JNICALL *jvmtiEventVMStart)
937     (jvmtiEnv *jvmti_env,
938      JNIEnv* jni_env);
939
940     /* Event Callback Structure */
941
942 typedef struct {
943                               /*   50 : VM Initialization Event */
944     jvmtiEventVMInit VMInit;
945                               /*   51 : VM Death Event */
946     jvmtiEventVMDeath VMDeath;
947                               /*   52 : Thread Start */
948     jvmtiEventThreadStart ThreadStart;
949                               /*   53 : Thread End */
950     jvmtiEventThreadEnd ThreadEnd;
951                               /*   54 : Class File Load Hook */
952     jvmtiEventClassFileLoadHook ClassFileLoadHook;
953                               /*   55 : Class Load */
954     jvmtiEventClassLoad ClassLoad;
955                               /*   56 : Class Prepare */
956     jvmtiEventClassPrepare ClassPrepare;
957                               /*   57 : VM Start Event */
958     jvmtiEventVMStart VMStart;
959                               /*   58 : Exception */
960     jvmtiEventException Exception;
961                               /*   59 : Exception Catch */
962     jvmtiEventExceptionCatch ExceptionCatch;
963                               /*   60 : Single Step */
964     jvmtiEventSingleStep SingleStep;
965                               /*   61 : Frame Pop */
966     jvmtiEventFramePop FramePop;
967                               /*   62 : Breakpoint */
968     jvmtiEventBreakpoint Breakpoint;
969                               /*   63 : Field Access */
970     jvmtiEventFieldAccess FieldAccess;
971                               /*   64 : Field Modification */
972     jvmtiEventFieldModification FieldModification;
973                               /*   65 : Method Entry */
974     jvmtiEventMethodEntry MethodEntry;
975                               /*   66 : Method Exit */
976     jvmtiEventMethodExit MethodExit;
977                               /*   67 : Native Method Bind */
978     jvmtiEventNativeMethodBind NativeMethodBind;
979                               /*   68 : Compiled Method Load */
980     jvmtiEventCompiledMethodLoad CompiledMethodLoad;
981                               /*   69 : Compiled Method Unload */
982     jvmtiEventCompiledMethodUnload CompiledMethodUnload;
983                               /*   70 : Dynamic Code Generated */
984     jvmtiEventDynamicCodeGenerated DynamicCodeGenerated;
985                               /*   71 : Data Dump Request */
986     jvmtiEventDataDumpRequest DataDumpRequest;
987                               /*   72 */
988     jvmtiEventReserved reserved72;
989                               /*   73 : Monitor Wait */
990     jvmtiEventMonitorWait MonitorWait;
991                               /*   74 : Monitor Waited */
992     jvmtiEventMonitorWaited MonitorWaited;
993                               /*   75 : Monitor Contended Enter */
994     jvmtiEventMonitorContendedEnter MonitorContendedEnter;
995                               /*   76 : Monitor Contended Entered */
996     jvmtiEventMonitorContendedEntered MonitorContendedEntered;
997                               /*   77 */
998     jvmtiEventReserved reserved77;
999                               /*   78 */
1000     jvmtiEventReserved reserved78;
1001                               /*   79 */
1002     jvmtiEventReserved reserved79;
1003                               /*   80 : Resource Exhausted */
1004     jvmtiEventResourceExhausted ResourceExhausted;
1005                               /*   81 : Garbage Collection Start */
1006     jvmtiEventGarbageCollectionStart GarbageCollectionStart;
1007                               /*   82 : Garbage Collection Finish */
1008     jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;
1009                               /*   83 : Object Free */
1010     jvmtiEventObjectFree ObjectFree;
1011                               /*   84 : VM Object Allocation */
1012     jvmtiEventVMObjectAlloc VMObjectAlloc;
1013                               /*   85 */
1014     jvmtiEventReserved reserved85;
1015                               /*   86 : Sampled Object Allocation */
1016     jvmtiEventSampledObjectAlloc SampledObjectAlloc;
1017 } jvmtiEventCallbacks;
1018
1019
1020     /* Function Interface */
1021
1022 typedef struct jvmtiInterface_1_ {
1023
1024   /*   1 :  RESERVED */
1025   void *reserved1;
1026
1027   /*   2 : Set Event Notification Mode */
1028   jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env,
1029     jvmtiEventMode mode,
1030     jvmtiEvent event_type,
1031     jthread event_thread,
1032      ...);
1033
1034   /*   3 : Get All Modules */
1035   jvmtiError (JNICALL *GetAllModules) (jvmtiEnv* env,
1036     jint* module_count_ptr,
1037     jobject** modules_ptr);
1038
1039   /*   4 : Get All Threads */
1040   jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env,
1041     jint* threads_count_ptr,
1042     jthread** threads_ptr);
1043
1044   /*   5 : Suspend Thread */
1045   jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env,
1046     jthread thread);
1047
1048   /*   6 : Resume Thread */
1049   jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env,
1050     jthread thread);
1051
1052   /*   7 : Stop Thread */
1053   jvmtiError (JNICALL *StopThread) (jvmtiEnv* env,
1054     jthread thread,
1055     jobject exception);
1056
1057   /*   8 : Interrupt Thread */
1058   jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env,
1059     jthread thread);
1060
1061   /*   9 : Get Thread Info */
1062   jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env,
1063     jthread thread,
1064     jvmtiThreadInfo* info_ptr);
1065
1066   /*   10 : Get Owned Monitor Info */
1067   jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env,
1068     jthread thread,
1069     jint* owned_monitor_count_ptr,
1070     jobject** owned_monitors_ptr);
1071
1072   /*   11 : Get Current Contended Monitor */
1073   jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env,
1074     jthread thread,
1075     jobject* monitor_ptr);
1076
1077   /*   12 : Run Agent Thread */
1078   jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env,
1079     jthread thread,
1080     jvmtiStartFunction proc,
1081     const void* arg,
1082     jint priority);
1083
1084   /*   13 : Get Top Thread Groups */
1085   jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env,
1086     jint* group_count_ptr,
1087     jthreadGroup** groups_ptr);
1088
1089   /*   14 : Get Thread Group Info */
1090   jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env,
1091     jthreadGroup group,
1092     jvmtiThreadGroupInfo* info_ptr);
1093
1094   /*   15 : Get Thread Group Children */
1095   jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv* env,
1096     jthreadGroup group,
1097     jint* thread_count_ptr,
1098     jthread** threads_ptr,
1099     jint* group_count_ptr,
1100     jthreadGroup** groups_ptr);
1101
1102   /*   16 : Get Frame Count */
1103   jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env,
1104     jthread thread,
1105     jint* count_ptr);
1106
1107   /*   17 : Get Thread State */
1108   jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env,
1109     jthread thread,
1110     jint* thread_state_ptr);
1111
1112   /*   18 : Get Current Thread */
1113   jvmtiError (JNICALL *GetCurrentThread) (jvmtiEnv* env,
1114     jthread* thread_ptr);
1115
1116   /*   19 : Get Frame Location */
1117   jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env,
1118     jthread thread,
1119     jint depth,
1120     jmethodID* method_ptr,
1121     jlocation* location_ptr);
1122
1123   /*   20 : Notify Frame Pop */
1124   jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env,
1125     jthread thread,
1126     jint depth);
1127
1128   /*   21 : Get Local Variable - Object */
1129   jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env,
1130     jthread thread,
1131     jint depth,
1132     jint slot,
1133     jobject* value_ptr);
1134
1135   /*   22 : Get Local Variable - Int */
1136   jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env,
1137     jthread thread,
1138     jint depth,
1139     jint slot,
1140     jint* value_ptr);
1141
1142   /*   23 : Get Local Variable - Long */
1143   jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env,
1144     jthread thread,
1145     jint depth,
1146     jint slot,
1147     jlong* value_ptr);
1148
1149   /*   24 : Get Local Variable - Float */
1150   jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env,
1151     jthread thread,
1152     jint depth,
1153     jint slot,
1154     jfloat* value_ptr);
1155
1156   /*   25 : Get Local Variable - Double */
1157   jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env,
1158     jthread thread,
1159     jint depth,
1160     jint slot,
1161     jdouble* value_ptr);
1162
1163   /*   26 : Set Local Variable - Object */
1164   jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env,
1165     jthread thread,
1166     jint depth,
1167     jint slot,
1168     jobject value);
1169
1170   /*   27 : Set Local Variable - Int */
1171   jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env,
1172     jthread thread,
1173     jint depth,
1174     jint slot,
1175     jint value);
1176
1177   /*   28 : Set Local Variable - Long */
1178   jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env,
1179     jthread thread,
1180     jint depth,
1181     jint slot,
1182     jlong value);
1183
1184   /*   29 : Set Local Variable - Float */
1185   jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv* env,
1186     jthread thread,
1187     jint depth,
1188     jint slot,
1189     jfloat value);
1190
1191   /*   30 : Set Local Variable - Double */
1192   jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv* env,
1193     jthread thread,
1194     jint depth,
1195     jint slot,
1196     jdouble value);
1197
1198   /*   31 : Create Raw Monitor */
1199   jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv* env,
1200     const char* name,
1201     jrawMonitorID* monitor_ptr);
1202
1203   /*   32 : Destroy Raw Monitor */
1204   jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv* env,
1205     jrawMonitorID monitor);
1206
1207   /*   33 : Raw Monitor Enter */
1208   jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv* env,
1209     jrawMonitorID monitor);
1210
1211   /*   34 : Raw Monitor Exit */
1212   jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv* env,
1213     jrawMonitorID monitor);
1214
1215   /*   35 : Raw Monitor Wait */
1216   jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv* env,
1217     jrawMonitorID monitor,
1218     jlong millis);
1219
1220   /*   36 : Raw Monitor Notify */
1221   jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv* env,
1222     jrawMonitorID monitor);
1223
1224   /*   37 : Raw Monitor Notify All */
1225   jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv* env,
1226     jrawMonitorID monitor);
1227
1228   /*   38 : Set Breakpoint */
1229   jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv* env,
1230     jmethodID method,
1231     jlocation location);
1232
1233   /*   39 : Clear Breakpoint */
1234   jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv* env,
1235     jmethodID method,
1236     jlocation location);
1237
1238   /*   40 : Get Named Module */
1239   jvmtiError (JNICALL *GetNamedModule) (jvmtiEnv* env,
1240     jobject class_loader,
1241     const char* package_name,
1242     jobject* module_ptr);
1243
1244   /*   41 : Set Field Access Watch */
1245   jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv* env,
1246     jclass klass,
1247     jfieldID field);
1248
1249   /*   42 : Clear Field Access Watch */
1250   jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv* env,
1251     jclass klass,
1252     jfieldID field);
1253
1254   /*   43 : Set Field Modification Watch */
1255   jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env,
1256     jclass klass,
1257     jfieldID field);
1258
1259   /*   44 : Clear Field Modification Watch */
1260   jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env,
1261     jclass klass,
1262     jfieldID field);
1263
1264   /*   45 : Is Modifiable Class */
1265   jvmtiError (JNICALL *IsModifiableClass) (jvmtiEnv* env,
1266     jclass klass,
1267     jboolean* is_modifiable_class_ptr);
1268
1269   /*   46 : Allocate */
1270   jvmtiError (JNICALL *Allocate) (jvmtiEnv* env,
1271     jlong size,
1272     unsigned char** mem_ptr);
1273
1274   /*   47 : Deallocate */
1275   jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env,
1276     unsigned char* mem);
1277
1278   /*   48 : Get Class Signature */
1279   jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv* env,
1280     jclass klass,
1281     char** signature_ptr,
1282     char** generic_ptr);
1283
1284   /*   49 : Get Class Status */
1285   jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv* env,
1286     jclass klass,
1287     jint* status_ptr);
1288
1289   /*   50 : Get Source File Name */
1290   jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv* env,
1291     jclass klass,
1292     char** source_name_ptr);
1293
1294   /*   51 : Get Class Modifiers */
1295   jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv* env,
1296     jclass klass,
1297     jint* modifiers_ptr);
1298
1299   /*   52 : Get Class Methods */
1300   jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv* env,
1301     jclass klass,
1302     jint* method_count_ptr,
1303     jmethodID** methods_ptr);
1304
1305   /*   53 : Get Class Fields */
1306   jvmtiError (JNICALL *GetClassFields) (jvmtiEnv* env,
1307     jclass klass,
1308     jint* field_count_ptr,
1309     jfieldID** fields_ptr);
1310
1311   /*   54 : Get Implemented Interfaces */
1312   jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv* env,
1313     jclass klass,
1314     jint* interface_count_ptr,
1315     jclass** interfaces_ptr);
1316
1317   /*   55 : Is Interface */
1318   jvmtiError (JNICALL *IsInterface) (jvmtiEnv* env,
1319     jclass klass,
1320     jboolean* is_interface_ptr);
1321
1322   /*   56 : Is Array Class */
1323   jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv* env,
1324     jclass klass,
1325     jboolean* is_array_class_ptr);
1326
1327   /*   57 : Get Class Loader */
1328   jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv* env,
1329     jclass klass,
1330     jobject* classloader_ptr);
1331
1332   /*   58 : Get Object Hash Code */
1333   jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv* env,
1334     jobject object,
1335     jint* hash_code_ptr);
1336
1337   /*   59 : Get Object Monitor Usage */
1338   jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv* env,
1339     jobject object,
1340     jvmtiMonitorUsage* info_ptr);
1341
1342   /*   60 : Get Field Name (and Signature) */
1343   jvmtiError (JNICALL *GetFieldName) (jvmtiEnv* env,
1344     jclass klass,
1345     jfieldID field,
1346     char** name_ptr,
1347     char** signature_ptr,
1348     char** generic_ptr);
1349
1350   /*   61 : Get Field Declaring Class */
1351   jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv* env,
1352     jclass klass,
1353     jfieldID field,
1354     jclass* declaring_class_ptr);
1355
1356   /*   62 : Get Field Modifiers */
1357   jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv* env,
1358     jclass klass,
1359     jfieldID field,
1360     jint* modifiers_ptr);
1361
1362   /*   63 : Is Field Synthetic */
1363   jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv* env,
1364     jclass klass,
1365     jfieldID field,
1366     jboolean* is_synthetic_ptr);
1367
1368   /*   64 : Get Method Name (and Signature) */
1369   jvmtiError (JNICALL *GetMethodName) (jvmtiEnv* env,
1370     jmethodID method,
1371     char** name_ptr,
1372     char** signature_ptr,
1373     char** generic_ptr);
1374
1375   /*   65 : Get Method Declaring Class */
1376   jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv* env,
1377     jmethodID method,
1378     jclass* declaring_class_ptr);
1379
1380   /*   66 : Get Method Modifiers */
1381   jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv* env,
1382     jmethodID method,
1383     jint* modifiers_ptr);
1384
1385   /*   67 :  RESERVED */
1386   void *reserved67;
1387
1388   /*   68 : Get Max Locals */
1389   jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv* env,
1390     jmethodID method,
1391     jint* max_ptr);
1392
1393   /*   69 : Get Arguments Size */
1394   jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv* env,
1395     jmethodID method,
1396     jint* size_ptr);
1397
1398   /*   70 : Get Line Number Table */
1399   jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv* env,
1400     jmethodID method,
1401     jint* entry_count_ptr,
1402     jvmtiLineNumberEntry** table_ptr);
1403
1404   /*   71 : Get Method Location */
1405   jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv* env,
1406     jmethodID method,
1407     jlocation* start_location_ptr,
1408     jlocation* end_location_ptr);
1409
1410   /*   72 : Get Local Variable Table */
1411   jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env,
1412     jmethodID method,
1413     jint* entry_count_ptr,
1414     jvmtiLocalVariableEntry** table_ptr);
1415
1416   /*   73 : Set Native Method Prefix */
1417   jvmtiError (JNICALL *SetNativeMethodPrefix) (jvmtiEnv* env,
1418     const char* prefix);
1419
1420   /*   74 : Set Native Method Prefixes */
1421   jvmtiError (JNICALL *SetNativeMethodPrefixes) (jvmtiEnv* env,
1422     jint prefix_count,
1423     char** prefixes);
1424
1425   /*   75 : Get Bytecodes */
1426   jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env,
1427     jmethodID method,
1428     jint* bytecode_count_ptr,
1429     unsigned char** bytecodes_ptr);
1430
1431   /*   76 : Is Method Native */
1432   jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env,
1433     jmethodID method,
1434     jboolean* is_native_ptr);
1435
1436   /*   77 : Is Method Synthetic */
1437   jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv* env,
1438     jmethodID method,
1439     jboolean* is_synthetic_ptr);
1440
1441   /*   78 : Get Loaded Classes */
1442   jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv* env,
1443     jint* class_count_ptr,
1444     jclass** classes_ptr);
1445
1446   /*   79 : Get Classloader Classes */
1447   jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env,
1448     jobject initiating_loader,
1449     jint* class_count_ptr,
1450     jclass** classes_ptr);
1451
1452   /*   80 : Pop Frame */
1453   jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env,
1454     jthread thread);
1455
1456   /*   81 : Force Early Return - Object */
1457   jvmtiError (JNICALL *ForceEarlyReturnObject) (jvmtiEnv* env,
1458     jthread thread,
1459     jobject value);
1460
1461   /*   82 : Force Early Return - Int */
1462   jvmtiError (JNICALL *ForceEarlyReturnInt) (jvmtiEnv* env,
1463     jthread thread,
1464     jint value);
1465
1466   /*   83 : Force Early Return - Long */
1467   jvmtiError (JNICALL *ForceEarlyReturnLong) (jvmtiEnv* env,
1468     jthread thread,
1469     jlong value);
1470
1471   /*   84 : Force Early Return - Float */
1472   jvmtiError (JNICALL *ForceEarlyReturnFloat) (jvmtiEnv* env,
1473     jthread thread,
1474     jfloat value);
1475
1476   /*   85 : Force Early Return - Double */
1477   jvmtiError (JNICALL *ForceEarlyReturnDouble) (jvmtiEnv* env,
1478     jthread thread,
1479     jdouble value);
1480
1481   /*   86 : Force Early Return - Void */
1482   jvmtiError (JNICALL *ForceEarlyReturnVoid) (jvmtiEnv* env,
1483     jthread thread);
1484
1485   /*   87 : Redefine Classes */
1486   jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env,
1487     jint class_count,
1488     const jvmtiClassDefinition* class_definitions);
1489
1490   /*   88 : Get Version Number */
1491   jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env,
1492     jint* version_ptr);
1493
1494   /*   89 : Get Capabilities */
1495   jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv* env,
1496     jvmtiCapabilities* capabilities_ptr);
1497
1498   /*   90 : Get Source Debug Extension */
1499   jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv* env,
1500     jclass klass,
1501     char** source_debug_extension_ptr);
1502
1503   /*   91 : Is Method Obsolete */
1504   jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv* env,
1505     jmethodID method,
1506     jboolean* is_obsolete_ptr);
1507
1508   /*   92 : Suspend Thread List */
1509   jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv* env,
1510     jint request_count,
1511     const jthread* request_list,
1512     jvmtiError* results);
1513
1514   /*   93 : Resume Thread List */
1515   jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv* env,
1516     jint request_count,
1517     const jthread* request_list,
1518     jvmtiError* results);
1519
1520   /*   94 : Add Module Reads */
1521   jvmtiError (JNICALL *AddModuleReads) (jvmtiEnv* env,
1522     jobject module,
1523     jobject to_module);
1524
1525   /*   95 : Add Module Exports */
1526   jvmtiError (JNICALL *AddModuleExports) (jvmtiEnv* env,
1527     jobject module,
1528     const char* pkg_name,
1529     jobject to_module);
1530
1531   /*   96 : Add Module Opens */
1532   jvmtiError (JNICALL *AddModuleOpens) (jvmtiEnv* env,
1533     jobject module,
1534     const char* pkg_name,
1535     jobject to_module);
1536
1537   /*   97 : Add Module Uses */
1538   jvmtiError (JNICALL *AddModuleUses) (jvmtiEnv* env,
1539     jobject module,
1540     jclass service);
1541
1542   /*   98 : Add Module Provides */
1543   jvmtiError (JNICALL *AddModuleProvides) (jvmtiEnv* env,
1544     jobject module,
1545     jclass service,
1546     jclass impl_class);
1547
1548   /*   99 : Is Modifiable Module */
1549   jvmtiError (JNICALL *IsModifiableModule) (jvmtiEnv* env,
1550     jobject module,
1551     jboolean* is_modifiable_module_ptr);
1552
1553   /*   100 : Get All Stack Traces */
1554   jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv* env,
1555     jint max_frame_count,
1556     jvmtiStackInfo** stack_info_ptr,
1557     jint* thread_count_ptr);
1558
1559   /*   101 : Get Thread List Stack Traces */
1560   jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv* env,
1561     jint thread_count,
1562     const jthread* thread_list,
1563     jint max_frame_count,
1564     jvmtiStackInfo** stack_info_ptr);
1565
1566   /*   102 : Get Thread Local Storage */
1567   jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv* env,
1568     jthread thread,
1569     void** data_ptr);
1570
1571   /*   103 : Set Thread Local Storage */
1572   jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv* env,
1573     jthread thread,
1574     const void* data);
1575
1576   /*   104 : Get Stack Trace */
1577   jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv* env,
1578     jthread thread,
1579     jint start_depth,
1580     jint max_frame_count,
1581     jvmtiFrameInfo* frame_buffer,
1582     jint* count_ptr);
1583
1584   /*   105 :  RESERVED */
1585   void *reserved105;
1586
1587   /*   106 : Get Tag */
1588   jvmtiError (JNICALL *GetTag) (jvmtiEnv* env,
1589     jobject object,
1590     jlong* tag_ptr);
1591
1592   /*   107 : Set Tag */
1593   jvmtiError (JNICALL *SetTag) (jvmtiEnv* env,
1594     jobject object,
1595     jlong tag);
1596
1597   /*   108 : Force Garbage Collection */
1598   jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env);
1599
1600   /*   109 : Iterate Over Objects Reachable From Object */
1601   jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* env,
1602     jobject object,
1603     jvmtiObjectReferenceCallback object_reference_callback,
1604     const void* user_data);
1605
1606   /*   110 : Iterate Over Reachable Objects */
1607   jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env,
1608     jvmtiHeapRootCallback heap_root_callback,
1609     jvmtiStackReferenceCallback stack_ref_callback,
1610     jvmtiObjectReferenceCallback object_ref_callback,
1611     const void* user_data);
1612
1613   /*   111 : Iterate Over Heap */
1614   jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env,
1615     jvmtiHeapObjectFilter object_filter,
1616     jvmtiHeapObjectCallback heap_object_callback,
1617     const void* user_data);
1618
1619   /*   112 : Iterate Over Instances Of Class */
1620   jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env,
1621     jclass klass,
1622     jvmtiHeapObjectFilter object_filter,
1623     jvmtiHeapObjectCallback heap_object_callback,
1624     const void* user_data);
1625
1626   /*   113 :  RESERVED */
1627   void *reserved113;
1628
1629   /*   114 : Get Objects With Tags */
1630   jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env,
1631     jint tag_count,
1632     const jlong* tags,
1633     jint* count_ptr,
1634     jobject** object_result_ptr,
1635     jlong** tag_result_ptr);
1636
1637   /*   115 : Follow References */
1638   jvmtiError (JNICALL *FollowReferences) (jvmtiEnv* env,
1639     jint heap_filter,
1640     jclass klass,
1641     jobject initial_object,
1642     const jvmtiHeapCallbacks* callbacks,
1643     const void* user_data);
1644
1645   /*   116 : Iterate Through Heap */
1646   jvmtiError (JNICALL *IterateThroughHeap) (jvmtiEnv* env,
1647     jint heap_filter,
1648     jclass klass,
1649     const jvmtiHeapCallbacks* callbacks,
1650     const void* user_data);
1651
1652   /*   117 :  RESERVED */
1653   void *reserved117;
1654
1655   /*   118 :  RESERVED */
1656   void *reserved118;
1657
1658   /*   119 :  RESERVED */
1659   void *reserved119;
1660
1661   /*   120 : Set JNI Function Table */
1662   jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv* env,
1663     const jniNativeInterface* function_table);
1664
1665   /*   121 : Get JNI Function Table */
1666   jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv* env,
1667     jniNativeInterface** function_table);
1668
1669   /*   122 : Set Event Callbacks */
1670   jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv* env,
1671     const jvmtiEventCallbacks* callbacks,
1672     jint size_of_callbacks);
1673
1674   /*   123 : Generate Events */
1675   jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv* env,
1676     jvmtiEvent event_type);
1677
1678   /*   124 : Get Extension Functions */
1679   jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv* env,
1680     jint* extension_count_ptr,
1681     jvmtiExtensionFunctionInfo** extensions);
1682
1683   /*   125 : Get Extension Events */
1684   jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv* env,
1685     jint* extension_count_ptr,
1686     jvmtiExtensionEventInfo** extensions);
1687
1688   /*   126 : Set Extension Event Callback */
1689   jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv* env,
1690     jint extension_event_index,
1691     jvmtiExtensionEvent callback);
1692
1693   /*   127 : Dispose Environment */
1694   jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv* env);
1695
1696   /*   128 : Get Error Name */
1697   jvmtiError (JNICALL *GetErrorName) (jvmtiEnv* env,
1698     jvmtiError error,
1699     char** name_ptr);
1700
1701   /*   129 : Get JLocation Format */
1702   jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv* env,
1703     jvmtiJlocationFormat* format_ptr);
1704
1705   /*   130 : Get System Properties */
1706   jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv* env,
1707     jint* count_ptr,
1708     char*** property_ptr);
1709
1710   /*   131 : Get System Property */
1711   jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv* env,
1712     const char* property,
1713     char** value_ptr);
1714
1715   /*   132 : Set System Property */
1716   jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv* env,
1717     const char* property,
1718     const char* value_ptr);
1719
1720   /*   133 : Get Phase */
1721   jvmtiError (JNICALL *GetPhase) (jvmtiEnv* env,
1722     jvmtiPhase* phase_ptr);
1723
1724   /*   134 : Get Current Thread CPU Timer Information */
1725   jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv* env,
1726     jvmtiTimerInfo* info_ptr);
1727
1728   /*   135 : Get Current Thread CPU Time */
1729   jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv* env,
1730     jlong* nanos_ptr);
1731
1732   /*   136 : Get Thread CPU Timer Information */
1733   jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv* env,
1734     jvmtiTimerInfo* info_ptr);
1735
1736   /*   137 : Get Thread CPU Time */
1737   jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv* env,
1738     jthread thread,
1739     jlong* nanos_ptr);
1740
1741   /*   138 : Get Timer Information */
1742   jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv* env,
1743     jvmtiTimerInfo* info_ptr);
1744
1745   /*   139 : Get Time */
1746   jvmtiError (JNICALL *GetTime) (jvmtiEnv* env,
1747     jlong* nanos_ptr);
1748
1749   /*   140 : Get Potential Capabilities */
1750   jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv* env,
1751     jvmtiCapabilities* capabilities_ptr);
1752
1753   /*   141 :  RESERVED */
1754   void *reserved141;
1755
1756   /*   142 : Add Capabilities */
1757   jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv* env,
1758     const jvmtiCapabilities* capabilities_ptr);
1759
1760   /*   143 : Relinquish Capabilities */
1761   jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env,
1762     const jvmtiCapabilities* capabilities_ptr);
1763
1764   /*   144 : Get Available Processors */
1765   jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env,
1766     jint* processor_count_ptr);
1767
1768   /*   145 : Get Class Version Numbers */
1769   jvmtiError (JNICALL *GetClassVersionNumbers) (jvmtiEnv* env,
1770     jclass klass,
1771     jint* minor_version_ptr,
1772     jint* major_version_ptr);
1773
1774   /*   146 : Get Constant Pool */
1775   jvmtiError (JNICALL *GetConstantPool) (jvmtiEnv* env,
1776     jclass klass,
1777     jint* constant_pool_count_ptr,
1778     jint* constant_pool_byte_count_ptr,
1779     unsigned char** constant_pool_bytes_ptr);
1780
1781   /*   147 : Get Environment Local Storage */
1782   jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env,
1783     void** data_ptr);
1784
1785   /*   148 : Set Environment Local Storage */
1786   jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env,
1787     const void* data);
1788
1789   /*   149 : Add To Bootstrap Class Loader Search */
1790   jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env,
1791     const char* segment);
1792
1793   /*   150 : Set Verbose Flag */
1794   jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env,
1795     jvmtiVerboseFlag flag,
1796     jboolean value);
1797
1798   /*   151 : Add To System Class Loader Search */
1799   jvmtiError (JNICALL *AddToSystemClassLoaderSearch) (jvmtiEnv* env,
1800     const char* segment);
1801
1802   /*   152 : Retransform Classes */
1803   jvmtiError (JNICALL *RetransformClasses) (jvmtiEnv* env,
1804     jint class_count,
1805     const jclass* classes);
1806
1807   /*   153 : Get Owned Monitor Stack Depth Info */
1808   jvmtiError (JNICALL *GetOwnedMonitorStackDepthInfo) (jvmtiEnv* env,
1809     jthread thread,
1810     jint* monitor_info_count_ptr,
1811     jvmtiMonitorStackDepthInfo** monitor_info_ptr);
1812
1813   /*   154 : Get Object Size */
1814   jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env,
1815     jobject object,
1816     jlong* size_ptr);
1817
1818   /*   155 : Get Local Instance */
1819   jvmtiError (JNICALL *GetLocalInstance) (jvmtiEnv* env,
1820     jthread thread,
1821     jint depth,
1822     jobject* value_ptr);
1823
1824   /*   156 : Set Heap Sampling Interval */
1825   jvmtiError (JNICALL *SetHeapSamplingInterval) (jvmtiEnv* env,
1826     jint sampling_interval);
1827
1828 } jvmtiInterface_1;
1829
1830 struct _jvmtiEnv {
1831     const struct jvmtiInterface_1_ *functions;
1832 #ifdef __cplusplus
1833
1834
1835   jvmtiError Allocate(jlong size,
1836             unsigned char** mem_ptr) {
1837     return functions->Allocate(this, size, mem_ptr);
1838   }
1839
1840   jvmtiError Deallocate(unsigned char* mem) {
1841     return functions->Deallocate(this, mem);
1842   }
1843
1844   jvmtiError GetThreadState(jthread thread,
1845             jint* thread_state_ptr) {
1846     return functions->GetThreadState(this, thread, thread_state_ptr);
1847   }
1848
1849   jvmtiError GetCurrentThread(jthread* thread_ptr) {
1850     return functions->GetCurrentThread(this, thread_ptr);
1851   }
1852
1853   jvmtiError GetAllThreads(jint* threads_count_ptr,
1854             jthread** threads_ptr) {
1855     return functions->GetAllThreads(this, threads_count_ptr, threads_ptr);
1856   }
1857
1858   jvmtiError SuspendThread(jthread thread) {
1859     return functions->SuspendThread(this, thread);
1860   }
1861
1862   jvmtiError SuspendThreadList(jint request_count,
1863             const jthread* request_list,
1864             jvmtiError* results) {
1865     return functions->SuspendThreadList(this, request_count, request_list, results);
1866   }
1867
1868   jvmtiError ResumeThread(jthread thread) {
1869     return functions->ResumeThread(this, thread);
1870   }
1871
1872   jvmtiError ResumeThreadList(jint request_count,
1873             const jthread* request_list,
1874             jvmtiError* results) {
1875     return functions->ResumeThreadList(this, request_count, request_list, results);
1876   }
1877
1878   jvmtiError StopThread(jthread thread,
1879             jobject exception) {
1880     return functions->StopThread(this, thread, exception);
1881   }
1882
1883   jvmtiError InterruptThread(jthread thread) {
1884     return functions->InterruptThread(this, thread);
1885   }
1886
1887   jvmtiError GetThreadInfo(jthread thread,
1888             jvmtiThreadInfo* info_ptr) {
1889     return functions->GetThreadInfo(this, thread, info_ptr);
1890   }
1891
1892   jvmtiError GetOwnedMonitorInfo(jthread thread,
1893             jint* owned_monitor_count_ptr,
1894             jobject** owned_monitors_ptr) {
1895     return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count_ptr, owned_monitors_ptr);
1896   }
1897
1898   jvmtiError GetOwnedMonitorStackDepthInfo(jthread thread,
1899             jint* monitor_info_count_ptr,
1900             jvmtiMonitorStackDepthInfo** monitor_info_ptr) {
1901     return functions->GetOwnedMonitorStackDepthInfo(this, thread, monitor_info_count_ptr, monitor_info_ptr);
1902   }
1903
1904   jvmtiError GetCurrentContendedMonitor(jthread thread,
1905             jobject* monitor_ptr) {
1906     return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr);
1907   }
1908
1909   jvmtiError RunAgentThread(jthread thread,
1910             jvmtiStartFunction proc,
1911             const void* arg,
1912             jint priority) {
1913     return functions->RunAgentThread(this, thread, proc, arg, priority);
1914   }
1915
1916   jvmtiError SetThreadLocalStorage(jthread thread,
1917             const void* data) {
1918     return functions->SetThreadLocalStorage(this, thread, data);
1919   }
1920
1921   jvmtiError GetThreadLocalStorage(jthread thread,
1922             void** data_ptr) {
1923     return functions->GetThreadLocalStorage(this, thread, data_ptr);
1924   }
1925
1926   jvmtiError GetTopThreadGroups(jint* group_count_ptr,
1927             jthreadGroup** groups_ptr) {
1928     return functions->GetTopThreadGroups(this, group_count_ptr, groups_ptr);
1929   }
1930
1931   jvmtiError GetThreadGroupInfo(jthreadGroup group,
1932             jvmtiThreadGroupInfo* info_ptr) {
1933     return functions->GetThreadGroupInfo(this, group, info_ptr);
1934   }
1935
1936   jvmtiError GetThreadGroupChildren(jthreadGroup group,
1937             jint* thread_count_ptr,
1938             jthread** threads_ptr,
1939             jint* group_count_ptr,
1940             jthreadGroup** groups_ptr) {
1941     return functions->GetThreadGroupChildren(this, group, thread_count_ptr, threads_ptr, group_count_ptr, groups_ptr);
1942   }
1943
1944   jvmtiError GetStackTrace(jthread thread,
1945             jint start_depth,
1946             jint max_frame_count,
1947             jvmtiFrameInfo* frame_buffer,
1948             jint* count_ptr) {
1949     return functions->GetStackTrace(this, thread, start_depth, max_frame_count, frame_buffer, count_ptr);
1950   }
1951
1952   jvmtiError GetAllStackTraces(jint max_frame_count,
1953             jvmtiStackInfo** stack_info_ptr,
1954             jint* thread_count_ptr) {
1955     return functions->GetAllStackTraces(this, max_frame_count, stack_info_ptr, thread_count_ptr);
1956   }
1957
1958   jvmtiError GetThreadListStackTraces(jint thread_count,
1959             const jthread* thread_list,
1960             jint max_frame_count,
1961             jvmtiStackInfo** stack_info_ptr) {
1962     return functions->GetThreadListStackTraces(this, thread_count, thread_list, max_frame_count, stack_info_ptr);
1963   }
1964
1965   jvmtiError GetFrameCount(jthread thread,
1966             jint* count_ptr) {
1967     return functions->GetFrameCount(this, thread, count_ptr);
1968   }
1969
1970   jvmtiError PopFrame(jthread thread) {
1971     return functions->PopFrame(this, thread);
1972   }
1973
1974   jvmtiError GetFrameLocation(jthread thread,
1975             jint depth,
1976             jmethodID* method_ptr,
1977             jlocation* location_ptr) {
1978     return functions->GetFrameLocation(this, thread, depth, method_ptr, location_ptr);
1979   }
1980
1981   jvmtiError NotifyFramePop(jthread thread,
1982             jint depth) {
1983     return functions->NotifyFramePop(this, thread, depth);
1984   }
1985
1986   jvmtiError ForceEarlyReturnObject(jthread thread,
1987             jobject value) {
1988     return functions->ForceEarlyReturnObject(this, thread, value);
1989   }
1990
1991   jvmtiError ForceEarlyReturnInt(jthread thread,
1992             jint value) {
1993     return functions->ForceEarlyReturnInt(this, thread, value);
1994   }
1995
1996   jvmtiError ForceEarlyReturnLong(jthread thread,
1997             jlong value) {
1998     return functions->ForceEarlyReturnLong(this, thread, value);
1999   }
2000
2001   jvmtiError ForceEarlyReturnFloat(jthread thread,
2002             jfloat value) {
2003     return functions->ForceEarlyReturnFloat(this, thread, value);
2004   }
2005
2006   jvmtiError ForceEarlyReturnDouble(jthread thread,
2007             jdouble value) {
2008     return functions->ForceEarlyReturnDouble(this, thread, value);
2009   }
2010
2011   jvmtiError ForceEarlyReturnVoid(jthread thread) {
2012     return functions->ForceEarlyReturnVoid(this, thread);
2013   }
2014
2015   jvmtiError FollowReferences(jint heap_filter,
2016             jclass klass,
2017             jobject initial_object,
2018             const jvmtiHeapCallbacks* callbacks,
2019             const void* user_data) {
2020     return functions->FollowReferences(this, heap_filter, klass, initial_object, callbacks, user_data);
2021   }
2022
2023   jvmtiError IterateThroughHeap(jint heap_filter,
2024             jclass klass,
2025             const jvmtiHeapCallbacks* callbacks,
2026             const void* user_data) {
2027     return functions->IterateThroughHeap(this, heap_filter, klass, callbacks, user_data);
2028   }
2029
2030   jvmtiError GetTag(jobject object,
2031             jlong* tag_ptr) {
2032     return functions->GetTag(this, object, tag_ptr);
2033   }
2034
2035   jvmtiError SetTag(jobject object,
2036             jlong tag) {
2037     return functions->SetTag(this, object, tag);
2038   }
2039
2040   jvmtiError GetObjectsWithTags(jint tag_count,
2041             const jlong* tags,
2042             jint* count_ptr,
2043             jobject** object_result_ptr,
2044             jlong** tag_result_ptr) {
2045     return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr, object_result_ptr, tag_result_ptr);
2046   }
2047
2048   jvmtiError ForceGarbageCollection() {
2049     return functions->ForceGarbageCollection(this);
2050   }
2051
2052   jvmtiError IterateOverObjectsReachableFromObject(jobject object,
2053             jvmtiObjectReferenceCallback object_reference_callback,
2054             const void* user_data) {
2055     return functions->IterateOverObjectsReachableFromObject(this, object, object_reference_callback, user_data);
2056   }
2057
2058   jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback,
2059             jvmtiStackReferenceCallback stack_ref_callback,
2060             jvmtiObjectReferenceCallback object_ref_callback,
2061             const void* user_data) {
2062     return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data);
2063   }
2064
2065   jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter,
2066             jvmtiHeapObjectCallback heap_object_callback,
2067             const void* user_data) {
2068     return functions->IterateOverHeap(this, object_filter, heap_object_callback, user_data);
2069   }
2070
2071   jvmtiError IterateOverInstancesOfClass(jclass klass,
2072             jvmtiHeapObjectFilter object_filter,
2073             jvmtiHeapObjectCallback heap_object_callback,
2074             const void* user_data) {
2075     return functions->IterateOverInstancesOfClass(this, klass, object_filter, heap_object_callback, user_data);
2076   }
2077
2078   jvmtiError GetLocalObject(jthread thread,
2079             jint depth,
2080             jint slot,
2081             jobject* value_ptr) {
2082     return functions->GetLocalObject(this, thread, depth, slot, value_ptr);
2083   }
2084
2085   jvmtiError GetLocalInstance(jthread thread,
2086             jint depth,
2087             jobject* value_ptr) {
2088     return functions->GetLocalInstance(this, thread, depth, value_ptr);
2089   }
2090
2091   jvmtiError GetLocalInt(jthread thread,
2092             jint depth,
2093             jint slot,
2094             jint* value_ptr) {
2095     return functions->GetLocalInt(this, thread, depth, slot, value_ptr);
2096   }
2097
2098   jvmtiError GetLocalLong(jthread thread,
2099             jint depth,
2100             jint slot,
2101             jlong* value_ptr) {
2102     return functions->GetLocalLong(this, thread, depth, slot, value_ptr);
2103   }
2104
2105   jvmtiError GetLocalFloat(jthread thread,
2106             jint depth,
2107             jint slot,
2108             jfloat* value_ptr) {
2109     return functions->GetLocalFloat(this, thread, depth, slot, value_ptr);
2110   }
2111
2112   jvmtiError GetLocalDouble(jthread thread,
2113             jint depth,
2114             jint slot,
2115             jdouble* value_ptr) {
2116     return functions->GetLocalDouble(this, thread, depth, slot, value_ptr);
2117   }
2118
2119   jvmtiError SetLocalObject(jthread thread,
2120             jint depth,
2121             jint slot,
2122             jobject value) {
2123     return functions->SetLocalObject(this, thread, depth, slot, value);
2124   }
2125
2126   jvmtiError SetLocalInt(jthread thread,
2127             jint depth,
2128             jint slot,
2129             jint value) {
2130     return functions->SetLocalInt(this, thread, depth, slot, value);
2131   }
2132
2133   jvmtiError SetLocalLong(jthread thread,
2134             jint depth,
2135             jint slot,
2136             jlong value) {
2137     return functions->SetLocalLong(this, thread, depth, slot, value);
2138   }
2139
2140   jvmtiError SetLocalFloat(jthread thread,
2141             jint depth,
2142             jint slot,
2143             jfloat value) {
2144     return functions->SetLocalFloat(this, thread, depth, slot, value);
2145   }
2146
2147   jvmtiError SetLocalDouble(jthread thread,
2148             jint depth,
2149             jint slot,
2150             jdouble value) {
2151     return functions->SetLocalDouble(this, thread, depth, slot, value);
2152   }
2153
2154   jvmtiError SetBreakpoint(jmethodID method,
2155             jlocation location) {
2156     return functions->SetBreakpoint(this, method, location);
2157   }
2158
2159   jvmtiError ClearBreakpoint(jmethodID method,
2160             jlocation location) {
2161     return functions->ClearBreakpoint(this, method, location);
2162   }
2163
2164   jvmtiError SetFieldAccessWatch(jclass klass,
2165             jfieldID field) {
2166     return functions->SetFieldAccessWatch(this, klass, field);
2167   }
2168
2169   jvmtiError ClearFieldAccessWatch(jclass klass,
2170             jfieldID field) {
2171     return functions->ClearFieldAccessWatch(this, klass, field);
2172   }
2173
2174   jvmtiError SetFieldModificationWatch(jclass klass,
2175             jfieldID field) {
2176     return functions->SetFieldModificationWatch(this, klass, field);
2177   }
2178
2179   jvmtiError ClearFieldModificationWatch(jclass klass,
2180             jfieldID field) {
2181     return functions->ClearFieldModificationWatch(this, klass, field);
2182   }
2183
2184   jvmtiError GetAllModules(jint* module_count_ptr,
2185             jobject** modules_ptr) {
2186     return functions->GetAllModules(this, module_count_ptr, modules_ptr);
2187   }
2188
2189   jvmtiError GetNamedModule(jobject class_loader,
2190             const char* package_name,
2191             jobject* module_ptr) {
2192     return functions->GetNamedModule(this, class_loader, package_name, module_ptr);
2193   }
2194
2195   jvmtiError AddModuleReads(jobject module,
2196             jobject to_module) {
2197     return functions->AddModuleReads(this, module, to_module);
2198   }
2199
2200   jvmtiError AddModuleExports(jobject module,
2201             const char* pkg_name,
2202             jobject to_module) {
2203     return functions->AddModuleExports(this, module, pkg_name, to_module);
2204   }
2205
2206   jvmtiError AddModuleOpens(jobject module,
2207             const char* pkg_name,
2208             jobject to_module) {
2209     return functions->AddModuleOpens(this, module, pkg_name, to_module);
2210   }
2211
2212   jvmtiError AddModuleUses(jobject module,
2213             jclass service) {
2214     return functions->AddModuleUses(this, module, service);
2215   }
2216
2217   jvmtiError AddModuleProvides(jobject module,
2218             jclass service,
2219             jclass impl_class) {
2220     return functions->AddModuleProvides(this, module, service, impl_class);
2221   }
2222
2223   jvmtiError IsModifiableModule(jobject module,
2224             jboolean* is_modifiable_module_ptr) {
2225     return functions->IsModifiableModule(this, module, is_modifiable_module_ptr);
2226   }
2227
2228   jvmtiError GetLoadedClasses(jint* class_count_ptr,
2229             jclass** classes_ptr) {
2230     return functions->GetLoadedClasses(this, class_count_ptr, classes_ptr);
2231   }
2232
2233   jvmtiError GetClassLoaderClasses(jobject initiating_loader,
2234             jint* class_count_ptr,
2235             jclass** classes_ptr) {
2236     return functions->GetClassLoaderClasses(this, initiating_loader, class_count_ptr, classes_ptr);
2237   }
2238
2239   jvmtiError GetClassSignature(jclass klass,
2240             char** signature_ptr,
2241             char** generic_ptr) {
2242     return functions->GetClassSignature(this, klass, signature_ptr, generic_ptr);
2243   }
2244
2245   jvmtiError GetClassStatus(jclass klass,
2246             jint* status_ptr) {
2247     return functions->GetClassStatus(this, klass, status_ptr);
2248   }
2249
2250   jvmtiError GetSourceFileName(jclass klass,
2251             char** source_name_ptr) {
2252     return functions->GetSourceFileName(this, klass, source_name_ptr);
2253   }
2254
2255   jvmtiError GetClassModifiers(jclass klass,
2256             jint* modifiers_ptr) {
2257     return functions->GetClassModifiers(this, klass, modifiers_ptr);
2258   }
2259
2260   jvmtiError GetClassMethods(jclass klass,
2261             jint* method_count_ptr,
2262             jmethodID** methods_ptr) {
2263     return functions->GetClassMethods(this, klass, method_count_ptr, methods_ptr);
2264   }
2265
2266   jvmtiError GetClassFields(jclass klass,
2267             jint* field_count_ptr,
2268             jfieldID** fields_ptr) {
2269     return functions->GetClassFields(this, klass, field_count_ptr, fields_ptr);
2270   }
2271
2272   jvmtiError GetImplementedInterfaces(jclass klass,
2273             jint* interface_count_ptr,
2274             jclass** interfaces_ptr) {
2275     return functions->GetImplementedInterfaces(this, klass, interface_count_ptr, interfaces_ptr);
2276   }
2277
2278   jvmtiError GetClassVersionNumbers(jclass klass,
2279             jint* minor_version_ptr,
2280             jint* major_version_ptr) {
2281     return functions->GetClassVersionNumbers(this, klass, minor_version_ptr, major_version_ptr);
2282   }
2283
2284   jvmtiError GetConstantPool(jclass klass,
2285             jint* constant_pool_count_ptr,
2286             jint* constant_pool_byte_count_ptr,
2287             unsigned char** constant_pool_bytes_ptr) {
2288     return functions->GetConstantPool(this, klass, constant_pool_count_ptr, constant_pool_byte_count_ptr, constant_pool_bytes_ptr);
2289   }
2290
2291   jvmtiError IsInterface(jclass klass,
2292             jboolean* is_interface_ptr) {
2293     return functions->IsInterface(this, klass, is_interface_ptr);
2294   }
2295
2296   jvmtiError IsArrayClass(jclass klass,
2297             jboolean* is_array_class_ptr) {
2298     return functions->IsArrayClass(this, klass, is_array_class_ptr);
2299   }
2300
2301   jvmtiError IsModifiableClass(jclass klass,
2302             jboolean* is_modifiable_class_ptr) {
2303     return functions->IsModifiableClass(this, klass, is_modifiable_class_ptr);
2304   }
2305
2306   jvmtiError GetClassLoader(jclass klass,
2307             jobject* classloader_ptr) {
2308     return functions->GetClassLoader(this, klass, classloader_ptr);
2309   }
2310
2311   jvmtiError GetSourceDebugExtension(jclass klass,
2312             char** source_debug_extension_ptr) {
2313     return functions->GetSourceDebugExtension(this, klass, source_debug_extension_ptr);
2314   }
2315
2316   jvmtiError RetransformClasses(jint class_count,
2317             const jclass* classes) {
2318     return functions->RetransformClasses(this, class_count, classes);
2319   }
2320
2321   jvmtiError RedefineClasses(jint class_count,
2322             const jvmtiClassDefinition* class_definitions) {
2323     return functions->RedefineClasses(this, class_count, class_definitions);
2324   }
2325
2326   jvmtiError GetObjectSize(jobject object,
2327             jlong* size_ptr) {
2328     return functions->GetObjectSize(this, object, size_ptr);
2329   }
2330
2331   jvmtiError GetObjectHashCode(jobject object,
2332             jint* hash_code_ptr) {
2333     return functions->GetObjectHashCode(this, object, hash_code_ptr);
2334   }
2335
2336   jvmtiError GetObjectMonitorUsage(jobject object,
2337             jvmtiMonitorUsage* info_ptr) {
2338     return functions->GetObjectMonitorUsage(this, object, info_ptr);
2339   }
2340
2341   jvmtiError GetFieldName(jclass klass,
2342             jfieldID field,
2343             char** name_ptr,
2344             char** signature_ptr,
2345             char** generic_ptr) {
2346     return functions->GetFieldName(this, klass, field, name_ptr, signature_ptr, generic_ptr);
2347   }
2348
2349   jvmtiError GetFieldDeclaringClass(jclass klass,
2350             jfieldID field,
2351             jclass* declaring_class_ptr) {
2352     return functions->GetFieldDeclaringClass(this, klass, field, declaring_class_ptr);
2353   }
2354
2355   jvmtiError GetFieldModifiers(jclass klass,
2356             jfieldID field,
2357             jint* modifiers_ptr) {
2358     return functions->GetFieldModifiers(this, klass, field, modifiers_ptr);
2359   }
2360
2361   jvmtiError IsFieldSynthetic(jclass klass,
2362             jfieldID field,
2363             jboolean* is_synthetic_ptr) {
2364     return functions->IsFieldSynthetic(this, klass, field, is_synthetic_ptr);
2365   }
2366
2367   jvmtiError GetMethodName(jmethodID method,
2368             char** name_ptr,
2369             char** signature_ptr,
2370             char** generic_ptr) {
2371     return functions->GetMethodName(this, method, name_ptr, signature_ptr, generic_ptr);
2372   }
2373
2374   jvmtiError GetMethodDeclaringClass(jmethodID method,
2375             jclass* declaring_class_ptr) {
2376     return functions->GetMethodDeclaringClass(this, method, declaring_class_ptr);
2377   }
2378
2379   jvmtiError GetMethodModifiers(jmethodID method,
2380             jint* modifiers_ptr) {
2381     return functions->GetMethodModifiers(this, method, modifiers_ptr);
2382   }
2383
2384   jvmtiError GetMaxLocals(jmethodID method,
2385             jint* max_ptr) {
2386     return functions->GetMaxLocals(this, method, max_ptr);
2387   }
2388
2389   jvmtiError GetArgumentsSize(jmethodID method,
2390             jint* size_ptr) {
2391     return functions->GetArgumentsSize(this, method, size_ptr);
2392   }
2393
2394   jvmtiError GetLineNumberTable(jmethodID method,
2395             jint* entry_count_ptr,
2396             jvmtiLineNumberEntry** table_ptr) {
2397     return functions->GetLineNumberTable(this, method, entry_count_ptr, table_ptr);
2398   }
2399
2400   jvmtiError GetMethodLocation(jmethodID method,
2401             jlocation* start_location_ptr,
2402             jlocation* end_location_ptr) {
2403     return functions->GetMethodLocation(this, method, start_location_ptr, end_location_ptr);
2404   }
2405
2406   jvmtiError GetLocalVariableTable(jmethodID method,
2407             jint* entry_count_ptr,
2408             jvmtiLocalVariableEntry** table_ptr) {
2409     return functions->GetLocalVariableTable(this, method, entry_count_ptr, table_ptr);
2410   }
2411
2412   jvmtiError GetBytecodes(jmethodID method,
2413             jint* bytecode_count_ptr,
2414             unsigned char** bytecodes_ptr) {
2415     return functions->GetBytecodes(this, method, bytecode_count_ptr, bytecodes_ptr);
2416   }
2417
2418   jvmtiError IsMethodNative(jmethodID method,
2419             jboolean* is_native_ptr) {
2420     return functions->IsMethodNative(this, method, is_native_ptr);
2421   }
2422
2423   jvmtiError IsMethodSynthetic(jmethodID method,
2424             jboolean* is_synthetic_ptr) {
2425     return functions->IsMethodSynthetic(this, method, is_synthetic_ptr);
2426   }
2427
2428   jvmtiError IsMethodObsolete(jmethodID method,
2429             jboolean* is_obsolete_ptr) {
2430     return functions->IsMethodObsolete(this, method, is_obsolete_ptr);
2431   }
2432
2433   jvmtiError SetNativeMethodPrefix(const char* prefix) {
2434     return functions->SetNativeMethodPrefix(this, prefix);
2435   }
2436
2437   jvmtiError SetNativeMethodPrefixes(jint prefix_count,
2438             char** prefixes) {
2439     return functions->SetNativeMethodPrefixes(this, prefix_count, prefixes);
2440   }
2441
2442   jvmtiError CreateRawMonitor(const char* name,
2443             jrawMonitorID* monitor_ptr) {
2444     return functions->CreateRawMonitor(this, name, monitor_ptr);
2445   }
2446
2447   jvmtiError DestroyRawMonitor(jrawMonitorID monitor) {
2448     return functions->DestroyRawMonitor(this, monitor);
2449   }
2450
2451   jvmtiError RawMonitorEnter(jrawMonitorID monitor) {
2452     return functions->RawMonitorEnter(this, monitor);
2453   }
2454
2455   jvmtiError RawMonitorExit(jrawMonitorID monitor) {
2456     return functions->RawMonitorExit(this, monitor);
2457   }
2458
2459   jvmtiError RawMonitorWait(jrawMonitorID monitor,
2460             jlong millis) {
2461     return functions->RawMonitorWait(this, monitor, millis);
2462   }
2463
2464   jvmtiError RawMonitorNotify(jrawMonitorID monitor) {
2465     return functions->RawMonitorNotify(this, monitor);
2466   }
2467
2468   jvmtiError RawMonitorNotifyAll(jrawMonitorID monitor) {
2469     return functions->RawMonitorNotifyAll(this, monitor);
2470   }
2471
2472   jvmtiError SetJNIFunctionTable(const jniNativeInterface* function_table) {
2473     return functions->SetJNIFunctionTable(this, function_table);
2474   }
2475
2476   jvmtiError GetJNIFunctionTable(jniNativeInterface** function_table) {
2477     return functions->GetJNIFunctionTable(this, function_table);
2478   }
2479
2480   jvmtiError SetEventCallbacks(const jvmtiEventCallbacks* callbacks,
2481             jint size_of_callbacks) {
2482     return functions->SetEventCallbacks(this, callbacks, size_of_callbacks);
2483   }
2484
2485   jvmtiError SetEventNotificationMode(jvmtiEventMode mode,
2486             jvmtiEvent event_type,
2487             jthread event_thread,
2488              ...) {
2489     return functions->SetEventNotificationMode(this, mode, event_type, event_thread);
2490   }
2491
2492   jvmtiError GenerateEvents(jvmtiEvent event_type) {
2493     return functions->GenerateEvents(this, event_type);
2494   }
2495
2496   jvmtiError GetExtensionFunctions(jint* extension_count_ptr,
2497             jvmtiExtensionFunctionInfo** extensions) {
2498     return functions->GetExtensionFunctions(this, extension_count_ptr, extensions);
2499   }
2500
2501   jvmtiError GetExtensionEvents(jint* extension_count_ptr,
2502             jvmtiExtensionEventInfo** extensions) {
2503     return functions->GetExtensionEvents(this, extension_count_ptr, extensions);
2504   }
2505
2506   jvmtiError SetExtensionEventCallback(jint extension_event_index,
2507             jvmtiExtensionEvent callback) {
2508     return functions->SetExtensionEventCallback(this, extension_event_index, callback);
2509   }
2510
2511   jvmtiError GetPotentialCapabilities(jvmtiCapabilities* capabilities_ptr) {
2512     return functions->GetPotentialCapabilities(this, capabilities_ptr);
2513   }
2514
2515   jvmtiError AddCapabilities(const jvmtiCapabilities* capabilities_ptr) {
2516     return functions->AddCapabilities(this, capabilities_ptr);
2517   }
2518
2519   jvmtiError RelinquishCapabilities(const jvmtiCapabilities* capabilities_ptr) {
2520     return functions->RelinquishCapabilities(this, capabilities_ptr);
2521   }
2522
2523   jvmtiError GetCapabilities(jvmtiCapabilities* capabilities_ptr) {
2524     return functions->GetCapabilities(this, capabilities_ptr);
2525   }
2526
2527   jvmtiError GetCurrentThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {
2528     return functions->GetCurrentThreadCpuTimerInfo(this, info_ptr);
2529   }
2530
2531   jvmtiError GetCurrentThreadCpuTime(jlong* nanos_ptr) {
2532     return functions->GetCurrentThreadCpuTime(this, nanos_ptr);
2533   }
2534
2535   jvmtiError GetThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {
2536     return functions->GetThreadCpuTimerInfo(this, info_ptr);
2537   }
2538
2539   jvmtiError GetThreadCpuTime(jthread thread,
2540             jlong* nanos_ptr) {
2541     return functions->GetThreadCpuTime(this, thread, nanos_ptr);
2542   }
2543
2544   jvmtiError GetTimerInfo(jvmtiTimerInfo* info_ptr) {
2545     return functions->GetTimerInfo(this, info_ptr);
2546   }
2547
2548   jvmtiError GetTime(jlong* nanos_ptr) {
2549     return functions->GetTime(this, nanos_ptr);
2550   }
2551
2552   jvmtiError GetAvailableProcessors(jint* processor_count_ptr) {
2553     return functions->GetAvailableProcessors(this, processor_count_ptr);
2554   }
2555
2556   jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) {
2557     return functions->AddToBootstrapClassLoaderSearch(this, segment);
2558   }
2559
2560   jvmtiError AddToSystemClassLoaderSearch(const char* segment) {
2561     return functions->AddToSystemClassLoaderSearch(this, segment);
2562   }
2563
2564   jvmtiError GetSystemProperties(jint* count_ptr,
2565             char*** property_ptr) {
2566     return functions->GetSystemProperties(this, count_ptr, property_ptr);
2567   }
2568
2569   jvmtiError GetSystemProperty(const char* property,
2570             char** value_ptr) {
2571     return functions->GetSystemProperty(this, property, value_ptr);
2572   }
2573
2574   jvmtiError SetSystemProperty(const char* property,
2575             const char* value_ptr) {
2576     return functions->SetSystemProperty(this, property, value_ptr);
2577   }
2578
2579   jvmtiError GetPhase(jvmtiPhase* phase_ptr) {
2580     return functions->GetPhase(this, phase_ptr);
2581   }
2582
2583   jvmtiError DisposeEnvironment() {
2584     return functions->DisposeEnvironment(this);
2585   }
2586
2587   jvmtiError SetEnvironmentLocalStorage(const void* data) {
2588     return functions->SetEnvironmentLocalStorage(this, data);
2589   }
2590
2591   jvmtiError GetEnvironmentLocalStorage(void** data_ptr) {
2592     return functions->GetEnvironmentLocalStorage(this, data_ptr);
2593   }
2594
2595   jvmtiError GetVersionNumber(jint* version_ptr) {
2596     return functions->GetVersionNumber(this, version_ptr);
2597   }
2598
2599   jvmtiError GetErrorName(jvmtiError error,
2600             char** name_ptr) {
2601     return functions->GetErrorName(this, error, name_ptr);
2602   }
2603
2604   jvmtiError SetVerboseFlag(jvmtiVerboseFlag flag,
2605             jboolean value) {
2606     return functions->SetVerboseFlag(this, flag, value);
2607   }
2608
2609   jvmtiError GetJLocationFormat(jvmtiJlocationFormat* format_ptr) {
2610     return functions->GetJLocationFormat(this, format_ptr);
2611   }
2612
2613   jvmtiError SetHeapSamplingInterval(jint sampling_interval) {
2614     return functions->SetHeapSamplingInterval(this, sampling_interval);
2615   }
2616
2617 #endif /* __cplusplus */
2618 };
2619
2620
2621 #ifdef __cplusplus
2622 } /* extern "C" */
2623 #endif /* __cplusplus */
2624
2625 #endif /* !_JAVA_JVMTI_H_ */