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