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