1#![allow(non_snake_case, non_camel_case_types, dead_code)]
5
6extern crate jni_sys;
7
8use std::os::raw::{c_char, c_uchar, c_int, c_uint, c_void};
9use jni_sys::{jobject, jlong, jint, jvalue, jchar, jboolean, jfloat, jdouble, jclass, jmethodID,
10 jfieldID, JNIEnv, JNINativeInterface_};
11use std::mem;
12
13pub const JVMTI_VERSION_1: c_uint = 805371904;
14pub const JVMTI_VERSION_1_0: c_uint = 805371904;
15pub const JVMTI_VERSION_1_1: c_uint = 805372160;
16pub const JVMTI_VERSION_1_2: c_uint = 805372416;
17pub const JVMTI_VERSION: c_int = 805372417;
18
19pub type jvmtiEnv = *const jvmtiInterface_1;
20pub type jthread = jobject;
21pub type jthreadGroup = jobject;
22pub type jlocation = jlong;
23pub enum _jrawMonitorID { }
24pub type jrawMonitorID = *mut _jrawMonitorID;
25
26pub const JVMTI_THREAD_STATE_ALIVE: c_uint = 1;
27pub const JVMTI_THREAD_STATE_TERMINATED: c_uint = 2;
28pub const JVMTI_THREAD_STATE_RUNNABLE: c_uint = 4;
29pub const JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER: c_uint = 1024;
30pub const JVMTI_THREAD_STATE_WAITING: c_uint = 128;
31pub const JVMTI_THREAD_STATE_WAITING_INDEFINITELY: c_uint = 16;
32pub const JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT: c_uint = 32;
33pub const JVMTI_THREAD_STATE_SLEEPING: c_uint = 64;
34pub const JVMTI_THREAD_STATE_IN_OBJECT_WAIT: c_uint = 256;
35pub const JVMTI_THREAD_STATE_PARKED: c_uint = 512;
36pub const JVMTI_THREAD_STATE_SUSPENDED: c_uint = 1048576;
37pub const JVMTI_THREAD_STATE_INTERRUPTED: c_uint = 2097152;
38pub const JVMTI_THREAD_STATE_IN_NATIVE: c_uint = 4194304;
39pub const JVMTI_THREAD_STATE_VENDOR_1: c_uint = 268435456;
40pub const JVMTI_THREAD_STATE_VENDOR_2: c_uint = 536870912;
41pub const JVMTI_THREAD_STATE_VENDOR_3: c_uint = 1073741824;
42
43pub const JVMTI_JAVA_LANG_THREAD_STATE_MASK: c_uint = 1207;
44pub const JVMTI_JAVA_LANG_THREAD_STATE_NEW: c_uint = 0;
45pub const JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED: c_uint = 2;
46pub const JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE: c_uint = 5;
47pub const JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED: c_uint = 1025;
48pub const JVMTI_JAVA_LANG_THREAD_STATE_WAITING: c_uint = 145;
49pub const JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING: c_uint = 161;
50
51pub const JVMTI_THREAD_MIN_PRIORITY: c_uint = 1;
52pub const JVMTI_THREAD_NORM_PRIORITY: c_uint = 5;
53pub const JVMTI_THREAD_MAX_PRIORITY: c_uint = 10;
54
55pub const JVMTI_HEAP_FILTER_TAGGED: c_uint = 4;
56pub const JVMTI_HEAP_FILTER_UNTAGGED: c_uint = 8;
57pub const JVMTI_HEAP_FILTER_CLASS_TAGGED: c_uint = 16;
58pub const JVMTI_HEAP_FILTER_CLASS_UNTAGGED: c_uint = 32;
59
60pub const JVMTI_VISIT_OBJECTS: c_uint = 256;
61pub const JVMTI_VISIT_ABORT: c_uint = 32768;
62
63#[derive(Clone, Copy)]
64#[repr(C)]
65pub enum jvmtiHeapReferenceKind {
66 JVMTI_HEAP_REFERENCE_CLASS = 1,
67 JVMTI_HEAP_REFERENCE_FIELD = 2,
68 JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT = 3,
69 JVMTI_HEAP_REFERENCE_CLASS_LOADER = 4,
70 JVMTI_HEAP_REFERENCE_SIGNERS = 5,
71 JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN = 6,
72 JVMTI_HEAP_REFERENCE_INTERFACE = 7,
73 JVMTI_HEAP_REFERENCE_STATIC_FIELD = 8,
74 JVMTI_HEAP_REFERENCE_CONSTANT_POOL = 9,
75 JVMTI_HEAP_REFERENCE_SUPERCLASS = 10,
76 JVMTI_HEAP_REFERENCE_JNI_GLOBAL = 21,
77 JVMTI_HEAP_REFERENCE_SYSTEM_CLASS = 22,
78 JVMTI_HEAP_REFERENCE_MONITOR = 23,
79 JVMTI_HEAP_REFERENCE_STACK_LOCAL = 24,
80 JVMTI_HEAP_REFERENCE_JNI_LOCAL = 25,
81 JVMTI_HEAP_REFERENCE_THREAD = 26,
82 JVMTI_HEAP_REFERENCE_OTHER = 27,
83}
84
85#[derive(Clone, Copy)]
86#[repr(C)]
87pub enum jvmtiPrimitiveType {
88 JVMTI_PRIMITIVE_TYPE_BOOLEAN = 90,
89 JVMTI_PRIMITIVE_TYPE_BYTE = 66,
90 JVMTI_PRIMITIVE_TYPE_CHAR = 67,
91 JVMTI_PRIMITIVE_TYPE_SHORT = 83,
92 JVMTI_PRIMITIVE_TYPE_INT = 73,
93 JVMTI_PRIMITIVE_TYPE_LONG = 74,
94 JVMTI_PRIMITIVE_TYPE_FLOAT = 70,
95 JVMTI_PRIMITIVE_TYPE_DOUBLE = 68,
96}
97
98#[derive(Clone, Copy)]
99#[repr(C)]
100pub enum jvmtiHeapObjectFilter {
101 JVMTI_HEAP_OBJECT_TAGGED = 1,
102 JVMTI_HEAP_OBJECT_UNTAGGED = 2,
103 JVMTI_HEAP_OBJECT_EITHER = 3,
104}
105
106#[derive(Clone, Copy)]
107#[repr(C)]
108pub enum jvmtiHeapRootKind {
109 JVMTI_HEAP_ROOT_JNI_GLOBAL = 1,
110 JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2,
111 JVMTI_HEAP_ROOT_MONITOR = 3,
112 JVMTI_HEAP_ROOT_STACK_LOCAL = 4,
113 JVMTI_HEAP_ROOT_JNI_LOCAL = 5,
114 JVMTI_HEAP_ROOT_THREAD = 6,
115 JVMTI_HEAP_ROOT_OTHER = 7,
116}
117
118#[derive(Clone, Copy)]
119#[repr(C)]
120pub enum jvmtiObjectReferenceKind {
121 JVMTI_REFERENCE_CLASS = 1,
122 JVMTI_REFERENCE_FIELD = 2,
123 JVMTI_REFERENCE_ARRAY_ELEMENT = 3,
124 JVMTI_REFERENCE_CLASS_LOADER = 4,
125 JVMTI_REFERENCE_SIGNERS = 5,
126 JVMTI_REFERENCE_PROTECTION_DOMAIN = 6,
127 JVMTI_REFERENCE_INTERFACE = 7,
128 JVMTI_REFERENCE_STATIC_FIELD = 8,
129 JVMTI_REFERENCE_CONSTANT_POOL = 9,
130}
131
132#[derive(Clone, Copy)]
133#[repr(C)]
134pub enum jvmtiIterationControl {
135 JVMTI_ITERATION_CONTINUE = 1,
136 JVMTI_ITERATION_IGNORE = 2,
137 JVMTI_ITERATION_ABORT = 0,
138}
139
140pub const JVMTI_CLASS_STATUS_VERIFIED: c_uint = 1;
141pub const JVMTI_CLASS_STATUS_PREPARED: c_uint = 2;
142pub const JVMTI_CLASS_STATUS_INITIALIZED: c_uint = 4;
143pub const JVMTI_CLASS_STATUS_ERROR: c_uint = 8;
144pub const JVMTI_CLASS_STATUS_ARRAY: c_uint = 16;
145pub const JVMTI_CLASS_STATUS_PRIMITIVE: c_uint = 32;
146
147#[derive(Clone, Copy)]
148#[repr(C)]
149pub enum jvmtiEventMode {
150 JVMTI_ENABLE = 1,
151 JVMTI_DISABLE = 0,
152}
153
154#[derive(Clone, Copy)]
155#[repr(C)]
156pub enum jvmtiParamTypes {
157 JVMTI_TYPE_JBYTE = 101,
158 JVMTI_TYPE_JCHAR = 102,
159 JVMTI_TYPE_JSHORT = 103,
160 JVMTI_TYPE_JINT = 104,
161 JVMTI_TYPE_JLONG = 105,
162 JVMTI_TYPE_JFLOAT = 106,
163 JVMTI_TYPE_JDOUBLE = 107,
164 JVMTI_TYPE_JBOOLEAN = 108,
165 JVMTI_TYPE_JOBJECT = 109,
166 JVMTI_TYPE_JTHREAD = 110,
167 JVMTI_TYPE_JCLASS = 111,
168 JVMTI_TYPE_JVALUE = 112,
169 JVMTI_TYPE_JFIELDID = 113,
170 JVMTI_TYPE_JMETHODID = 114,
171 JVMTI_TYPE_CCHAR = 115,
172 JVMTI_TYPE_CVOID = 116,
173 JVMTI_TYPE_JNIENV = 117,
174}
175
176#[derive(Clone, Copy)]
177#[repr(C)]
178pub enum jvmtiParamKind {
179 JVMTI_KIND_IN = 91,
180 JVMTI_KIND_IN_PTR = 92,
181 JVMTI_KIND_IN_BUF = 93,
182 JVMTI_KIND_ALLOC_BUF = 94,
183 JVMTI_KIND_ALLOC_ALLOC_BUF = 95,
184 JVMTI_KIND_OUT = 96,
185 JVMTI_KIND_OUT_BUF = 97,
186}
187
188#[derive(Clone, Copy)]
189#[repr(C)]
190pub enum jvmtiTimerKind {
191 JVMTI_TIMER_USER_CPU = 30,
192 JVMTI_TIMER_TOTAL_CPU = 31,
193 JVMTI_TIMER_ELAPSED = 32,
194}
195
196#[derive(Clone, Copy)]
197#[repr(C)]
198pub enum jvmtiPhase {
199 JVMTI_PHASE_ONLOAD = 1,
200 JVMTI_PHASE_PRIMORDIAL = 2,
201 JVMTI_PHASE_START = 6,
202 JVMTI_PHASE_LIVE = 4,
203 JVMTI_PHASE_DEAD = 8,
204}
205
206pub const JVMTI_VERSION_INTERFACE_JNI: c_uint = 0;
207pub const JVMTI_VERSION_INTERFACE_JVMTI: c_uint = 805306368;
208
209pub const JVMTI_VERSION_MASK_INTERFACE_TYPE: c_uint = 1879048192;
210pub const JVMTI_VERSION_MASK_MAJOR: c_uint = 268369920;
211pub const JVMTI_VERSION_MASK_MINOR: c_uint = 65280;
212pub const JVMTI_VERSION_MASK_MICRO: c_uint = 255;
213
214pub const JVMTI_VERSION_SHIFT_MAJOR: c_uint = 16;
215pub const JVMTI_VERSION_SHIFT_MINOR: c_uint = 8;
216pub const JVMTI_VERSION_SHIFT_MICRO: c_uint = 0;
217
218#[derive(Clone, Copy)]
219#[repr(C)]
220pub enum jvmtiVerboseFlag {
221 JVMTI_VERBOSE_OTHER = 0,
222 JVMTI_VERBOSE_GC = 1,
223 JVMTI_VERBOSE_CLASS = 2,
224 JVMTI_VERBOSE_JNI = 4,
225}
226
227#[derive(Clone, Copy)]
228#[repr(C)]
229pub enum jvmtiJlocationFormat {
230 JVMTI_JLOCATION_JVMBCI = 1,
231 JVMTI_JLOCATION_MACHINEPC = 2,
232 JVMTI_JLOCATION_OTHER = 0,
233}
234
235pub const JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR: c_uint = 1;
236pub const JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP: c_uint = 2;
237pub const JVMTI_RESOURCE_EXHAUSTED_THREADS: c_uint = 4;
238
239#[derive(Clone, Copy, Debug)]
240#[repr(C)]
241pub enum jvmtiError {
242 JVMTI_ERROR_NONE = 0,
243 JVMTI_ERROR_INVALID_THREAD = 10,
244 JVMTI_ERROR_INVALID_THREAD_GROUP = 11,
245 JVMTI_ERROR_INVALID_PRIORITY = 12,
246 JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,
247 JVMTI_ERROR_THREAD_SUSPENDED = 14,
248 JVMTI_ERROR_THREAD_NOT_ALIVE = 15,
249 JVMTI_ERROR_INVALID_OBJECT = 20,
250 JVMTI_ERROR_INVALID_CLASS = 21,
251 JVMTI_ERROR_CLASS_NOT_PREPARED = 22,
252 JVMTI_ERROR_INVALID_METHODID = 23,
253 JVMTI_ERROR_INVALID_LOCATION = 24,
254 JVMTI_ERROR_INVALID_FIELDID = 25,
255 JVMTI_ERROR_NO_MORE_FRAMES = 31,
256 JVMTI_ERROR_OPAQUE_FRAME = 32,
257 JVMTI_ERROR_TYPE_MISMATCH = 34,
258 JVMTI_ERROR_INVALID_SLOT = 35,
259 JVMTI_ERROR_DUPLICATE = 40,
260 JVMTI_ERROR_NOT_FOUND = 41,
261 JVMTI_ERROR_INVALID_MONITOR = 50,
262 JVMTI_ERROR_NOT_MONITOR_OWNER = 51,
263 JVMTI_ERROR_INTERRUPT = 52,
264 JVMTI_ERROR_INVALID_CLASS_FORMAT = 60,
265 JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61,
266 JVMTI_ERROR_FAILS_VERIFICATION = 62,
267 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63,
268 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64,
269 JVMTI_ERROR_INVALID_TYPESTATE = 65,
270 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66,
271 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67,
272 JVMTI_ERROR_UNSUPPORTED_VERSION = 68,
273 JVMTI_ERROR_NAMES_DONT_MATCH = 69,
274 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,
275 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,
276 JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,
277 JVMTI_ERROR_NOT_AVAILABLE = 98,
278 JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,
279 JVMTI_ERROR_NULL_POINTER = 100,
280 JVMTI_ERROR_ABSENT_INFORMATION = 101,
281 JVMTI_ERROR_INVALID_EVENT_TYPE = 102,
282 JVMTI_ERROR_ILLEGAL_ARGUMENT = 103,
283 JVMTI_ERROR_NATIVE_METHOD = 104,
284 JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED = 106,
285 JVMTI_ERROR_OUT_OF_MEMORY = 110,
286 JVMTI_ERROR_ACCESS_DENIED = 111,
287 JVMTI_ERROR_WRONG_PHASE = 112,
288 JVMTI_ERROR_INTERNAL = 113,
289 JVMTI_ERROR_UNATTACHED_THREAD = 115,
290 JVMTI_ERROR_INVALID_ENVIRONMENT = 116,
291}
292pub const JVMTI_ERROR_MAX: c_uint = 116;
293
294pub const JVMTI_MIN_EVENT_TYPE_VAL: c_uint = 50;
295#[derive(Clone, Copy)]
296#[repr(C)]
297pub enum jvmtiEvent {
298 JVMTI_EVENT_VM_INIT = 50,
299 JVMTI_EVENT_VM_DEATH = 51,
300 JVMTI_EVENT_THREAD_START = 52,
301 JVMTI_EVENT_THREAD_END = 53,
302 JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54,
303 JVMTI_EVENT_CLASS_LOAD = 55,
304 JVMTI_EVENT_CLASS_PREPARE = 56,
305 JVMTI_EVENT_VM_START = 57,
306 JVMTI_EVENT_EXCEPTION = 58,
307 JVMTI_EVENT_EXCEPTION_CATCH = 59,
308 JVMTI_EVENT_SINGLE_STEP = 60,
309 JVMTI_EVENT_FRAME_POP = 61,
310 JVMTI_EVENT_BREAKPOINT = 62,
311 JVMTI_EVENT_FIELD_ACCESS = 63,
312 JVMTI_EVENT_FIELD_MODIFICATION = 64,
313 JVMTI_EVENT_METHOD_ENTRY = 65,
314 JVMTI_EVENT_METHOD_EXIT = 66,
315 JVMTI_EVENT_NATIVE_METHOD_BIND = 67,
316 JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,
317 JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,
318 JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,
319 JVMTI_EVENT_DATA_DUMP_REQUEST = 71,
320 JVMTI_EVENT_MONITOR_WAIT = 73,
321 JVMTI_EVENT_MONITOR_WAITED = 74,
322 JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,
323 JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,
324 JVMTI_EVENT_RESOURCE_EXHAUSTED = 80,
325 JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,
326 JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,
327 JVMTI_EVENT_OBJECT_FREE = 83,
328 JVMTI_EVENT_VM_OBJECT_ALLOC = 84,
329}
330pub const JVMTI_MAX_EVENT_TYPE_VAL: c_uint = 84;
331
332pub type jvmtiStartFunction = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
379 jni_env: *mut JNIEnv,
380 arg: *mut c_void)
381 -> ()>;
382pub type jvmtiHeapIterationCallback = Option<unsafe extern "C" fn(class_tag: jlong,
383 size: jlong,
384 tag_ptr: *mut jlong,
385 length: jint,
386 user_data: *mut c_void)
387 -> jint>;
388pub type jvmtiHeapReferenceCallback =
389 Option<unsafe extern "C" fn(reference_kind: jvmtiHeapReferenceKind,
390 reference_info: *const jvmtiHeapReferenceInfo,
391 class_tag: jlong,
392 referrer_class_tag: jlong,
393 size: jlong,
394 tag_ptr: *mut jlong,
395 referrer_tag_ptr: *mut jlong,
396 length: jint,
397 user_data: *mut c_void)
398 -> jint>;
399pub type jvmtiPrimitiveFieldCallback =
400 Option<unsafe extern "C" fn(kind: jvmtiHeapReferenceKind,
401 info: *const jvmtiHeapReferenceInfo,
402 object_class_tag: jlong,
403 object_tag_ptr: *mut jlong,
404 value: jvalue,
405 value_type: jvmtiPrimitiveType,
406 user_data: *mut c_void)
407 -> jint>;
408pub type jvmtiArrayPrimitiveValueCallback =
409 Option<unsafe extern "C" fn(class_tag: jlong,
410 size: jlong,
411 tag_ptr: *mut jlong,
412 element_count: jint,
413 element_type: jvmtiPrimitiveType,
414 elements: *const c_void,
415 user_data: *mut c_void)
416 -> jint>;
417pub type jvmtiStringPrimitiveValueCallback = Option<unsafe extern "C" fn(class_tag: jlong,
418 size: jlong,
419 tag_ptr: *mut jlong,
420 value: *const jchar,
421 value_length: jint,
422 user_data: *mut c_void)
423 -> jint>;
424pub type jvmtiReservedCallback = Option<extern "C" fn() -> jint>;
425pub type jvmtiHeapObjectCallback = Option<unsafe extern "C" fn(class_tag: jlong,
426 size: jlong,
427 tag_ptr: *mut jlong,
428 user_data: *mut c_void)
429 -> jvmtiIterationControl>;
430pub type jvmtiHeapRootCallback = Option<unsafe extern "C" fn(root_kind: jvmtiHeapRootKind,
431 class_tag: jlong,
432 size: jlong,
433 tag_ptr: *mut jlong,
434 user_data: *mut c_void)
435 -> jvmtiIterationControl>;
436pub type jvmtiStackReferenceCallback = Option<unsafe extern "C" fn(root_kind: jvmtiHeapRootKind,
437 class_tag: jlong,
438 size: jlong,
439 tag_ptr: *mut jlong,
440 thread_tag: jlong,
441 depth: jint,
442 method: jmethodID,
443 slot: jint,
444 user_data: *mut c_void)
445 -> jvmtiIterationControl>;
446pub type jvmtiObjectReferenceCallback =
447 Option<unsafe extern "C" fn(reference_kind: jvmtiObjectReferenceKind,
448 class_tag: jlong,
449 size: jlong,
450 tag_ptr: *mut jlong,
451 referrer_tag: jlong,
452 referrer_index: jint,
453 user_data: *mut c_void)
454 -> jvmtiIterationControl>;
455pub type jvmtiExtensionFunction = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv, ...)
456 -> jvmtiError>;
457pub type jvmtiExtensionEvent = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv, ...) -> ()>;
458
459#[repr(C)]
460#[derive(Copy)]
461pub struct jvmtiThreadInfo {
462 pub name: *mut c_char,
463 pub priority: jint,
464 pub is_daemon: jboolean,
465 pub thread_group: jthreadGroup,
466 pub context_class_loader: jobject,
467}
468impl Clone for jvmtiThreadInfo {
469 fn clone(&self) -> Self {
470 *self
471 }
472}
473impl Default for jvmtiThreadInfo {
474 fn default() -> Self {
475 unsafe { mem::zeroed() }
476 }
477}
478
479#[repr(C)]
480#[derive(Copy)]
481pub struct jvmtiMonitorStackDepthInfo {
482 pub monitor: jobject,
483 pub stack_depth: jint,
484}
485impl Clone for jvmtiMonitorStackDepthInfo {
486 fn clone(&self) -> Self {
487 *self
488 }
489}
490impl Default for jvmtiMonitorStackDepthInfo {
491 fn default() -> Self {
492 unsafe { mem::zeroed() }
493 }
494}
495
496#[repr(C)]
497#[derive(Copy)]
498pub struct jvmtiThreadGroupInfo {
499 pub parent: jthreadGroup,
500 pub name: *mut c_char,
501 pub max_priority: jint,
502 pub is_daemon: jboolean,
503}
504impl Clone for jvmtiThreadGroupInfo {
505 fn clone(&self) -> Self {
506 *self
507 }
508}
509impl Default for jvmtiThreadGroupInfo {
510 fn default() -> Self {
511 unsafe { mem::zeroed() }
512 }
513}
514
515#[repr(C)]
516#[derive(Copy)]
517pub struct jvmtiFrameInfo {
518 pub method: jmethodID,
519 pub location: jlocation,
520}
521impl Clone for jvmtiFrameInfo {
522 fn clone(&self) -> Self {
523 *self
524 }
525}
526impl Default for jvmtiFrameInfo {
527 fn default() -> Self {
528 unsafe { mem::zeroed() }
529 }
530}
531
532#[repr(C)]
533#[derive(Copy)]
534pub struct jvmtiStackInfo {
535 pub thread: jthread,
536 pub state: jint,
537 pub frame_buffer: *mut jvmtiFrameInfo,
538 pub frame_count: jint,
539}
540impl Clone for jvmtiStackInfo {
541 fn clone(&self) -> Self {
542 *self
543 }
544}
545impl Default for jvmtiStackInfo {
546 fn default() -> Self {
547 unsafe { mem::zeroed() }
548 }
549}
550
551#[repr(C)]
552#[derive(Copy)]
553pub struct jvmtiHeapReferenceInfoField {
554 pub index: jint,
555}
556impl Clone for jvmtiHeapReferenceInfoField {
557 fn clone(&self) -> Self {
558 *self
559 }
560}
561impl Default for jvmtiHeapReferenceInfoField {
562 fn default() -> Self {
563 unsafe { mem::zeroed() }
564 }
565}
566
567#[repr(C)]
568#[derive(Copy)]
569pub struct jvmtiHeapReferenceInfoArray {
570 pub index: jint,
571}
572impl Clone for jvmtiHeapReferenceInfoArray {
573 fn clone(&self) -> Self {
574 *self
575 }
576}
577impl Default for jvmtiHeapReferenceInfoArray {
578 fn default() -> Self {
579 unsafe { mem::zeroed() }
580 }
581}
582
583#[repr(C)]
584#[derive(Copy)]
585pub struct jvmtiHeapReferenceInfoConstantPool {
586 pub index: jint,
587}
588impl Clone for jvmtiHeapReferenceInfoConstantPool {
589 fn clone(&self) -> Self {
590 *self
591 }
592}
593impl Default for jvmtiHeapReferenceInfoConstantPool {
594 fn default() -> Self {
595 unsafe { mem::zeroed() }
596 }
597}
598
599#[repr(C)]
600#[derive(Copy)]
601pub struct jvmtiHeapReferenceInfoStackLocal {
602 pub thread_tag: jlong,
603 pub thread_id: jlong,
604 pub depth: jint,
605 pub method: jmethodID,
606 pub location: jlocation,
607 pub slot: jint,
608}
609impl Clone for jvmtiHeapReferenceInfoStackLocal {
610 fn clone(&self) -> Self {
611 *self
612 }
613}
614impl Default for jvmtiHeapReferenceInfoStackLocal {
615 fn default() -> Self {
616 unsafe { mem::zeroed() }
617 }
618}
619
620#[repr(C)]
621#[derive(Copy)]
622pub struct jvmtiHeapReferenceInfoJniLocal {
623 pub thread_tag: jlong,
624 pub thread_id: jlong,
625 pub depth: jint,
626 pub method: jmethodID,
627}
628impl Clone for jvmtiHeapReferenceInfoJniLocal {
629 fn clone(&self) -> Self {
630 *self
631 }
632}
633impl Default for jvmtiHeapReferenceInfoJniLocal {
634 fn default() -> Self {
635 unsafe { mem::zeroed() }
636 }
637}
638
639#[repr(C)]
640#[derive(Copy)]
641pub struct jvmtiHeapReferenceInfoReserved {
642 pub reserved1: jlong,
643 pub reserved2: jlong,
644 pub reserved3: jlong,
645 pub reserved4: jlong,
646 pub reserved5: jlong,
647 pub reserved6: jlong,
648 pub reserved7: jlong,
649 pub reserved8: jlong,
650}
651impl Clone for jvmtiHeapReferenceInfoReserved {
652 fn clone(&self) -> Self {
653 *self
654 }
655}
656impl Default for jvmtiHeapReferenceInfoReserved {
657 fn default() -> Self {
658 unsafe { mem::zeroed() }
659 }
660}
661
662#[repr(C)]
663#[derive(Copy)]
664pub struct jvmtiHeapReferenceInfo {
665 pub _bindgen_data_: [u64; 8usize],
666}
667impl jvmtiHeapReferenceInfo {
668 pub unsafe fn field(&mut self) -> *mut jvmtiHeapReferenceInfoField {
669 let raw: *mut u8 = mem::transmute(&self._bindgen_data_);
670 mem::transmute(raw.offset(0))
671 }
672 pub unsafe fn array(&mut self) -> *mut jvmtiHeapReferenceInfoArray {
673 let raw: *mut u8 = mem::transmute(&self._bindgen_data_);
674 mem::transmute(raw.offset(0))
675 }
676 pub unsafe fn constant_pool(&mut self) -> *mut jvmtiHeapReferenceInfoConstantPool {
677 let raw: *mut u8 = mem::transmute(&self._bindgen_data_);
678 mem::transmute(raw.offset(0))
679 }
680 pub unsafe fn stack_local(&mut self) -> *mut jvmtiHeapReferenceInfoStackLocal {
681 let raw: *mut u8 = mem::transmute(&self._bindgen_data_);
682 mem::transmute(raw.offset(0))
683 }
684 pub unsafe fn jni_local(&mut self) -> *mut jvmtiHeapReferenceInfoJniLocal {
685 let raw: *mut u8 = mem::transmute(&self._bindgen_data_);
686 mem::transmute(raw.offset(0))
687 }
688 pub unsafe fn other(&mut self) -> *mut jvmtiHeapReferenceInfoReserved {
689 let raw: *mut u8 = mem::transmute(&self._bindgen_data_);
690 mem::transmute(raw.offset(0))
691 }
692}
693impl Clone for jvmtiHeapReferenceInfo {
694 fn clone(&self) -> Self {
695 *self
696 }
697}
698impl Default for jvmtiHeapReferenceInfo {
699 fn default() -> Self {
700 unsafe { mem::zeroed() }
701 }
702}
703
704#[repr(C)]
705#[derive(Copy)]
706pub struct jvmtiHeapCallbacks {
707 pub heap_iteration_callback: jvmtiHeapIterationCallback,
708 pub heap_reference_callback: jvmtiHeapReferenceCallback,
709 pub primitive_field_callback: jvmtiPrimitiveFieldCallback,
710 pub array_primitive_value_callback: jvmtiArrayPrimitiveValueCallback,
711 pub string_primitive_value_callback: jvmtiStringPrimitiveValueCallback,
712 pub reserved5: jvmtiReservedCallback,
713 pub reserved6: jvmtiReservedCallback,
714 pub reserved7: jvmtiReservedCallback,
715 pub reserved8: jvmtiReservedCallback,
716 pub reserved9: jvmtiReservedCallback,
717 pub reserved10: jvmtiReservedCallback,
718 pub reserved11: jvmtiReservedCallback,
719 pub reserved12: jvmtiReservedCallback,
720 pub reserved13: jvmtiReservedCallback,
721 pub reserved14: jvmtiReservedCallback,
722 pub reserved15: jvmtiReservedCallback,
723}
724impl Clone for jvmtiHeapCallbacks {
725 fn clone(&self) -> Self {
726 *self
727 }
728}
729impl Default for jvmtiHeapCallbacks {
730 fn default() -> Self {
731 unsafe { mem::zeroed() }
732 }
733}
734
735#[repr(C)]
736#[derive(Copy)]
737pub struct jvmtiClassDefinition {
738 pub klass: jclass,
739 pub class_byte_count: jint,
740 pub class_bytes: *const c_uchar,
741}
742impl Clone for jvmtiClassDefinition {
743 fn clone(&self) -> Self {
744 *self
745 }
746}
747impl Default for jvmtiClassDefinition {
748 fn default() -> Self {
749 unsafe { mem::zeroed() }
750 }
751}
752
753#[repr(C)]
754#[derive(Copy)]
755pub struct jvmtiMonitorUsage {
756 pub owner: jthread,
757 pub entry_count: jint,
758 pub waiter_count: jint,
759 pub waiters: *mut jthread,
760 pub notify_waiter_count: jint,
761 pub notify_waiters: *mut jthread,
762}
763impl Clone for jvmtiMonitorUsage {
764 fn clone(&self) -> Self {
765 *self
766 }
767}
768impl Default for jvmtiMonitorUsage {
769 fn default() -> Self {
770 unsafe { mem::zeroed() }
771 }
772}
773
774#[repr(C)]
775#[derive(Copy)]
776pub struct jvmtiLineNumberEntry {
777 pub start_location: jlocation,
778 pub line_number: jint,
779}
780impl Clone for jvmtiLineNumberEntry {
781 fn clone(&self) -> Self {
782 *self
783 }
784}
785impl Default for jvmtiLineNumberEntry {
786 fn default() -> Self {
787 unsafe { mem::zeroed() }
788 }
789}
790
791#[repr(C)]
792#[derive(Copy)]
793pub struct jvmtiLocalVariableEntry {
794 pub start_location: jlocation,
795 pub length: jint,
796 pub name: *mut c_char,
797 pub signature: *mut c_char,
798 pub generic_signature: *mut c_char,
799 pub slot: jint,
800}
801impl Clone for jvmtiLocalVariableEntry {
802 fn clone(&self) -> Self {
803 *self
804 }
805}
806impl Default for jvmtiLocalVariableEntry {
807 fn default() -> Self {
808 unsafe { mem::zeroed() }
809 }
810}
811
812#[repr(C)]
813#[derive(Copy)]
814pub struct jvmtiParamInfo {
815 pub name: *mut c_char,
816 pub kind: jvmtiParamKind,
817 pub base_type: jvmtiParamTypes,
818 pub null_ok: jboolean,
819}
820impl Clone for jvmtiParamInfo {
821 fn clone(&self) -> Self {
822 *self
823 }
824}
825impl Default for jvmtiParamInfo {
826 fn default() -> Self {
827 unsafe { mem::zeroed() }
828 }
829}
830
831#[repr(C)]
832#[derive(Copy)]
833pub struct jvmtiExtensionFunctionInfo {
834 pub func: jvmtiExtensionFunction,
835 pub id: *mut c_char,
836 pub short_description: *mut c_char,
837 pub param_count: jint,
838 pub params: *mut jvmtiParamInfo,
839 pub error_count: jint,
840 pub errors: *mut jvmtiError,
841}
842impl Clone for jvmtiExtensionFunctionInfo {
843 fn clone(&self) -> Self {
844 *self
845 }
846}
847impl Default for jvmtiExtensionFunctionInfo {
848 fn default() -> Self {
849 unsafe { mem::zeroed() }
850 }
851}
852
853#[repr(C)]
854#[derive(Copy)]
855pub struct jvmtiExtensionEventInfo {
856 pub extension_event_index: jint,
857 pub id: *mut c_char,
858 pub short_description: *mut c_char,
859 pub param_count: jint,
860 pub params: *mut jvmtiParamInfo,
861}
862impl Clone for jvmtiExtensionEventInfo {
863 fn clone(&self) -> Self {
864 *self
865 }
866}
867impl Default for jvmtiExtensionEventInfo {
868 fn default() -> Self {
869 unsafe { mem::zeroed() }
870 }
871}
872
873#[repr(C)]
874#[derive(Copy)]
875pub struct jvmtiTimerInfo {
876 pub max_value: jlong,
877 pub may_skip_forward: jboolean,
878 pub may_skip_backward: jboolean,
879 pub kind: jvmtiTimerKind,
880 pub reserved1: jlong,
881 pub reserved2: jlong,
882}
883impl Clone for jvmtiTimerInfo {
884 fn clone(&self) -> Self {
885 *self
886 }
887}
888impl Default for jvmtiTimerInfo {
889 fn default() -> Self {
890 unsafe { mem::zeroed() }
891 }
892}
893
894#[repr(C)]
895#[derive(Copy)]
896pub struct jvmtiAddrLocationMap {
897 pub start_address: *const c_void,
898 pub location: jlocation,
899}
900impl Clone for jvmtiAddrLocationMap {
901 fn clone(&self) -> Self {
902 *self
903 }
904}
905impl Default for jvmtiAddrLocationMap {
906 fn default() -> Self {
907 unsafe { mem::zeroed() }
908 }
909}
910
911#[repr(C)]
912#[derive(Copy)]
913pub struct jvmtiCapabilities {
914 pub _bindgen_bitfield_1_: c_uint,
915 pub _bindgen_bitfield_2_: c_uint,
916 pub _bindgen_bitfield_3_: c_uint,
917 pub _bindgen_bitfield_4_: c_uint,
918}
919impl Clone for jvmtiCapabilities {
920 fn clone(&self) -> Self {
921 *self
922 }
923}
924impl Default for jvmtiCapabilities {
925 fn default() -> Self {
926 unsafe { mem::zeroed() }
927 }
928}
929
930pub type jvmtiEventReserved = Option<extern "C" fn() -> ()>;
931pub type jvmtiEventBreakpoint = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
932 jni_env: *mut JNIEnv,
933 thread: jthread,
934 method: jmethodID,
935 location: jlocation)
936 -> ()>;
937pub type jvmtiEventClassFileLoadHook =
938 Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
939 jni_env: *mut JNIEnv,
940 class_being_redefined: jclass,
941 loader: jobject,
942 name: *const c_char,
943 protection_domain: jobject,
944 class_data_len: jint,
945 class_data: *const c_uchar,
946 new_class_data_len: *mut jint,
947 new_class_data: *mut *mut c_uchar)
948 -> ()>;
949pub type jvmtiEventClassLoad = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
950 jni_env: *mut JNIEnv,
951 thread: jthread,
952 klass: jclass)
953 -> ()>;
954pub type jvmtiEventClassPrepare = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
955 jni_env: *mut JNIEnv,
956 thread: jthread,
957 klass: jclass)
958 -> ()>;
959pub type jvmtiEventCompiledMethodLoad =
960 Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
961 method: jmethodID,
962 code_size: jint,
963 code_addr: *const c_void,
964 map_length: jint,
965 map: *const jvmtiAddrLocationMap,
966 compile_info: *const c_void)
967 -> ()>;
968pub type jvmtiEventCompiledMethodUnload = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
969 method: jmethodID,
970 code_addr: *const c_void)
971 -> ()>;
972pub type jvmtiEventDataDumpRequest = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv) -> ()>;
973pub type jvmtiEventDynamicCodeGenerated = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
974 name: *const c_char,
975 address: *const c_void,
976 length: jint)
977 -> ()>;
978pub type jvmtiEventException = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
979 jni_env: *mut JNIEnv,
980 thread: jthread,
981 method: jmethodID,
982 location: jlocation,
983 exception: jobject,
984 catch_method: jmethodID,
985 catch_location: jlocation)
986 -> ()>;
987pub type jvmtiEventExceptionCatch = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
988 jni_env: *mut JNIEnv,
989 thread: jthread,
990 method: jmethodID,
991 location: jlocation,
992 exception: jobject)
993 -> ()>;
994pub type jvmtiEventFieldAccess = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
995 jni_env: *mut JNIEnv,
996 thread: jthread,
997 method: jmethodID,
998 location: jlocation,
999 field_klass: jclass,
1000 object: jobject,
1001 field: jfieldID)
1002 -> ()>;
1003pub type jvmtiEventFieldModification = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1004 jni_env: *mut JNIEnv,
1005 thread: jthread,
1006 method: jmethodID,
1007 location: jlocation,
1008 field_klass: jclass,
1009 object: jobject,
1010 field: jfieldID,
1011 signature_type: c_char,
1012 new_value: jvalue)
1013 -> ()>;
1014pub type jvmtiEventFramePop = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1015 jni_env: *mut JNIEnv,
1016 thread: jthread,
1017 method: jmethodID,
1018 was_popped_by_exception: jboolean)
1019 -> ()>;
1020pub type jvmtiEventGarbageCollectionFinish = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv)
1021 -> ()>;
1022pub type jvmtiEventGarbageCollectionStart = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv)
1023 -> ()>;
1024pub type jvmtiEventMethodEntry = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1025 jni_env: *mut JNIEnv,
1026 thread: jthread,
1027 method: jmethodID)
1028 -> ()>;
1029pub type jvmtiEventMethodExit = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1030 jni_env: *mut JNIEnv,
1031 thread: jthread,
1032 method: jmethodID,
1033 was_popped_by_exception: jboolean,
1034 return_value: jvalue)
1035 -> ()>;
1036pub type jvmtiEventMonitorContendedEnter = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1037 jni_env: *mut JNIEnv,
1038 thread: jthread,
1039 object: jobject)
1040 -> ()>;
1041pub type jvmtiEventMonitorContendedEntered = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1042 jni_env: *mut JNIEnv,
1043 thread: jthread,
1044 object: jobject)
1045 -> ()>;
1046pub type jvmtiEventMonitorWait = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1047 jni_env: *mut JNIEnv,
1048 thread: jthread,
1049 object: jobject,
1050 timeout: jlong)
1051 -> ()>;
1052pub type jvmtiEventMonitorWaited = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1053 jni_env: *mut JNIEnv,
1054 thread: jthread,
1055 object: jobject,
1056 timed_out: jboolean)
1057 -> ()>;
1058pub type jvmtiEventNativeMethodBind =
1059 Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1060 jni_env: *mut JNIEnv,
1061 thread: jthread,
1062 method: jmethodID,
1063 address: *mut c_void,
1064 new_address_ptr: *mut *mut c_void)
1065 -> ()>;
1066pub type jvmtiEventObjectFree = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv, tag: jlong)
1067 -> ()>;
1068pub type jvmtiEventResourceExhausted = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1069 jni_env: *mut JNIEnv,
1070 flags: jint,
1071 reserved: *const c_void,
1072 description: *const c_char)
1073 -> ()>;
1074pub type jvmtiEventSingleStep = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1075 jni_env: *mut JNIEnv,
1076 thread: jthread,
1077 method: jmethodID,
1078 location: jlocation)
1079 -> ()>;
1080pub type jvmtiEventThreadEnd = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1081 jni_env: *mut JNIEnv,
1082 thread: jthread)
1083 -> ()>;
1084pub type jvmtiEventThreadStart = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1085 jni_env: *mut JNIEnv,
1086 thread: jthread)
1087 -> ()>;
1088pub type jvmtiEventVMDeath = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1089 jni_env: *mut JNIEnv)
1090 -> ()>;
1091pub type jvmtiEventVMInit = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1092 jni_env: *mut JNIEnv,
1093 thread: jthread)
1094 -> ()>;
1095pub type jvmtiEventVMObjectAlloc = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1096 jni_env: *mut JNIEnv,
1097 thread: jthread,
1098 object: jobject,
1099 object_klass: jclass,
1100 size: jlong)
1101 -> ()>;
1102pub type jvmtiEventVMStart = Option<unsafe extern "C" fn(jvmti_env: *mut jvmtiEnv,
1103 jni_env: *mut JNIEnv)
1104 -> ()>;
1105
1106#[repr(C)]
1107#[derive(Copy)]
1108pub struct jvmtiEventCallbacks {
1109 pub VMInit: jvmtiEventVMInit,
1110 pub VMDeath: jvmtiEventVMDeath,
1111 pub ThreadStart: jvmtiEventThreadStart,
1112 pub ThreadEnd: jvmtiEventThreadEnd,
1113 pub ClassFileLoadHook: jvmtiEventClassFileLoadHook,
1114 pub ClassLoad: jvmtiEventClassLoad,
1115 pub ClassPrepare: jvmtiEventClassPrepare,
1116 pub VMStart: jvmtiEventVMStart,
1117 pub Exception: jvmtiEventException,
1118 pub ExceptionCatch: jvmtiEventExceptionCatch,
1119 pub SingleStep: jvmtiEventSingleStep,
1120 pub FramePop: jvmtiEventFramePop,
1121 pub Breakpoint: jvmtiEventBreakpoint,
1122 pub FieldAccess: jvmtiEventFieldAccess,
1123 pub FieldModification: jvmtiEventFieldModification,
1124 pub MethodEntry: jvmtiEventMethodEntry,
1125 pub MethodExit: jvmtiEventMethodExit,
1126 pub NativeMethodBind: jvmtiEventNativeMethodBind,
1127 pub CompiledMethodLoad: jvmtiEventCompiledMethodLoad,
1128 pub CompiledMethodUnload: jvmtiEventCompiledMethodUnload,
1129 pub DynamicCodeGenerated: jvmtiEventDynamicCodeGenerated,
1130 pub DataDumpRequest: jvmtiEventDataDumpRequest,
1131 pub reserved72: jvmtiEventReserved,
1132 pub MonitorWait: jvmtiEventMonitorWait,
1133 pub MonitorWaited: jvmtiEventMonitorWaited,
1134 pub MonitorContendedEnter: jvmtiEventMonitorContendedEnter,
1135 pub MonitorContendedEntered: jvmtiEventMonitorContendedEntered,
1136 pub reserved77: jvmtiEventReserved,
1137 pub reserved78: jvmtiEventReserved,
1138 pub reserved79: jvmtiEventReserved,
1139 pub ResourceExhausted: jvmtiEventResourceExhausted,
1140 pub GarbageCollectionStart: jvmtiEventGarbageCollectionStart,
1141 pub GarbageCollectionFinish: jvmtiEventGarbageCollectionFinish,
1142 pub ObjectFree: jvmtiEventObjectFree,
1143 pub VMObjectAlloc: jvmtiEventVMObjectAlloc,
1144}
1145impl Clone for jvmtiEventCallbacks {
1146 fn clone(&self) -> Self {
1147 *self
1148 }
1149}
1150impl Default for jvmtiEventCallbacks {
1151 fn default() -> Self {
1152 unsafe { mem::zeroed() }
1153 }
1154}
1155
1156#[repr(C)]
1157#[derive(Copy)]
1158pub struct jvmtiInterface_1 {
1159 pub reserved1: *mut c_void,
1160 pub SetEventNotificationMode: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, mode: jvmtiEventMode, event_type: jvmtiEvent, event_thread: jthread, ...) -> jvmtiError>,
1161 pub reserved3: *mut c_void,
1162 pub GetAllThreads: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, threads_count_ptr: *mut jint, threads_ptr: *mut *mut jthread) -> jvmtiError>,
1163 pub SuspendThread: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread) -> jvmtiError>,
1164 pub ResumeThread: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread) -> jvmtiError>,
1165 pub StopThread: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, exception: jobject) -> jvmtiError>,
1166 pub InterruptThread: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread) -> jvmtiError>,
1167 pub GetThreadInfo: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, info_ptr: *mut jvmtiThreadInfo) -> jvmtiError>,
1168 pub GetOwnedMonitorInfo: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, owned_monitor_count_ptr: *mut jint, owned_monitors_ptr: *mut *mut jobject) -> jvmtiError>,
1169 pub GetCurrentContendedMonitor: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, monitor_ptr: *mut jobject) -> jvmtiError>,
1170 pub RunAgentThread: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, _proc: jvmtiStartFunction, arg: *const c_void, priority: jint) -> jvmtiError>,
1171 pub GetTopThreadGroups: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, group_count_ptr: *mut jint, groups_ptr: *mut *mut jthreadGroup) -> jvmtiError>,
1172 pub GetThreadGroupInfo: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, group: jthreadGroup, info_ptr: *mut jvmtiThreadGroupInfo) -> jvmtiError>,
1173 pub GetThreadGroupChildren: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, group: jthreadGroup, thread_count_ptr: *mut jint, threads_ptr: *mut *mut jthread, group_count_ptr: *mut jint, groups_ptr: *mut *mut jthreadGroup) -> jvmtiError>,
1174 pub GetFrameCount: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, count_ptr: *mut jint) -> jvmtiError>,
1175 pub GetThreadState: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, thread_state_ptr: *mut jint) -> jvmtiError>,
1176 pub GetCurrentThread: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread_ptr: *mut jthread) -> jvmtiError>,
1177 pub GetFrameLocation: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, method_ptr: *mut jmethodID, location_ptr: *mut jlocation) -> jvmtiError>,
1178 pub NotifyFramePop: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint) -> jvmtiError>,
1179 pub GetLocalObject: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, slot: jint, value_ptr: *mut jobject) -> jvmtiError>,
1180 pub GetLocalInt: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, slot: jint, value_ptr: *mut jint) -> jvmtiError>,
1181 pub GetLocalLong: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, slot: jint, value_ptr: *mut jlong) -> jvmtiError>,
1182 pub GetLocalFloat: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, slot: jint, value_ptr: *mut jfloat) -> jvmtiError>,
1183 pub GetLocalDouble: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, slot: jint, value_ptr: *mut jdouble) -> jvmtiError>,
1184 pub SetLocalObject: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, slot: jint, value: jobject) -> jvmtiError>,
1185 pub SetLocalInt: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, slot: jint, value: jint) -> jvmtiError>,
1186 pub SetLocalLong: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, slot: jint, value: jlong) -> jvmtiError>,
1187 pub SetLocalFloat: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, slot: jint, value: jfloat) -> jvmtiError>,
1188 pub SetLocalDouble: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, slot: jint, value: jdouble) -> jvmtiError>,
1189 pub CreateRawMonitor: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, name: *const c_char, monitor_ptr: *mut jrawMonitorID) -> jvmtiError>,
1190 pub DestroyRawMonitor: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID) -> jvmtiError>,
1191 pub RawMonitorEnter: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID) -> jvmtiError>,
1192 pub RawMonitorExit: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID) -> jvmtiError>,
1193 pub RawMonitorWait: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID, millis: jlong) -> jvmtiError>,
1194 pub RawMonitorNotify: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID) -> jvmtiError>,
1195 pub RawMonitorNotifyAll: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, monitor: jrawMonitorID) -> jvmtiError>,
1196 pub SetBreakpoint: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, location: jlocation) -> jvmtiError>,
1197 pub ClearBreakpoint: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, location: jlocation) -> jvmtiError>,
1198 pub reserved40: *mut c_void,
1199 pub SetFieldAccessWatch: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID) -> jvmtiError>,
1200 pub ClearFieldAccessWatch: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID) -> jvmtiError>,
1201 pub SetFieldModificationWatch: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID) -> jvmtiError>,
1202 pub ClearFieldModificationWatch: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID) -> jvmtiError>,
1203 pub IsModifiableClass: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, is_modifiable_class_ptr: *mut jboolean) -> jvmtiError>,
1204 pub Allocate: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, size: jlong, mem_ptr: *mut *mut c_uchar) -> jvmtiError>,
1205 pub Deallocate: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, mem: *mut c_uchar) -> jvmtiError>,
1206 pub GetClassSignature: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, signature_ptr: *mut *mut c_char, generic_ptr: *mut *mut c_char) -> jvmtiError>,
1207 pub GetClassStatus: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, status_ptr: *mut jint) -> jvmtiError>,
1208 pub GetSourceFileName: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, source_name_ptr: *mut *mut c_char) -> jvmtiError>,
1209 pub GetClassModifiers: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, modifiers_ptr: *mut jint) -> jvmtiError>,
1210 pub GetClassMethods: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, method_count_ptr: *mut jint, methods_ptr: *mut *mut jmethodID) -> jvmtiError>,
1211 pub GetClassFields: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field_count_ptr: *mut jint, fields_ptr: *mut *mut jfieldID) -> jvmtiError>,
1212 pub GetImplementedInterfaces: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, interface_count_ptr: *mut jint, interfaces_ptr: *mut *mut jclass) -> jvmtiError>,
1213 pub IsInterface: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, is_interface_ptr: *mut jboolean) -> jvmtiError>,
1214 pub IsArrayClass: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, is_array_class_ptr: *mut jboolean) -> jvmtiError>,
1215 pub GetClassLoader: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, classloader_ptr: *mut jobject) -> jvmtiError>,
1216 pub GetObjectHashCode: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, object: jobject, hash_code_ptr: *mut jint) -> jvmtiError>,
1217 pub GetObjectMonitorUsage: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, object: jobject, info_ptr: *mut jvmtiMonitorUsage) -> jvmtiError>,
1218 pub GetFieldName: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID, name_ptr: *mut *mut c_char, signature_ptr: *mut *mut c_char, generic_ptr: *mut *mut c_char) -> jvmtiError>,
1219 pub GetFieldDeclaringClass: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID, declaring_class_ptr: *mut jclass) -> jvmtiError>,
1220 pub GetFieldModifiers: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID, modifiers_ptr: *mut jint) -> jvmtiError>,
1221 pub IsFieldSynthetic: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, field: jfieldID, is_synthetic_ptr: *mut jboolean) -> jvmtiError>,
1222 pub GetMethodName: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, name_ptr: *mut *mut c_char, signature_ptr: *mut *mut c_char, generic_ptr: *mut *mut c_char) -> jvmtiError>,
1223 pub GetMethodDeclaringClass: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, declaring_class_ptr: *mut jclass) -> jvmtiError>,
1224 pub GetMethodModifiers: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, modifiers_ptr: *mut jint) -> jvmtiError>,
1225 pub reserved67: *mut c_void,
1226 pub GetMaxLocals: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, max_ptr: *mut jint) -> jvmtiError>,
1227 pub GetArgumentsSize: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, size_ptr: *mut jint) -> jvmtiError>,
1228 pub GetLineNumberTable: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, entry_count_ptr: *mut jint, table_ptr: *mut *mut jvmtiLineNumberEntry) -> jvmtiError>,
1229 pub GetMethodLocation: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, start_location_ptr: *mut jlocation, end_location_ptr: *mut jlocation) -> jvmtiError>,
1230 pub GetLocalVariableTable: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, entry_count_ptr: *mut jint, table_ptr: *mut *mut jvmtiLocalVariableEntry) -> jvmtiError>,
1231 pub SetNativeMethodPrefix: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, prefix: *const c_char) -> jvmtiError>,
1232 pub SetNativeMethodPrefixes: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, prefix_count: jint, prefixes: *mut *mut c_char) -> jvmtiError>,
1233 pub GetBytecodes: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, bytecode_count_ptr: *mut jint, bytecodes_ptr: *mut *mut c_uchar) -> jvmtiError>,
1234 pub IsMethodNative: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, is_native_ptr: *mut jboolean) -> jvmtiError>,
1235 pub IsMethodSynthetic: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, is_synthetic_ptr: *mut jboolean) -> jvmtiError>,
1236 pub GetLoadedClasses: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, class_count_ptr: *mut jint, classes_ptr: *mut *mut jclass) -> jvmtiError>,
1237 pub GetClassLoaderClasses: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, initiating_loader: jobject, class_count_ptr: *mut jint, classes_ptr: *mut *mut jclass) -> jvmtiError>,
1238 pub PopFrame: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread) -> jvmtiError>,
1239 pub ForceEarlyReturnObject: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, value: jobject) -> jvmtiError>,
1240 pub ForceEarlyReturnInt: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, value: jint) -> jvmtiError>,
1241 pub ForceEarlyReturnLong: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, value: jlong) -> jvmtiError>,
1242 pub ForceEarlyReturnFloat: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, value: jfloat) -> jvmtiError>,
1243 pub ForceEarlyReturnDouble: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, value: jdouble) -> jvmtiError>,
1244 pub ForceEarlyReturnVoid: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread) -> jvmtiError>,
1245 pub RedefineClasses: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, class_count: jint, class_definitions: *const jvmtiClassDefinition) -> jvmtiError>,
1246 pub GetVersionNumber: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, version_ptr: *mut jint) -> jvmtiError>,
1247 pub GetCapabilities: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, capabilities_ptr: *mut jvmtiCapabilities) -> jvmtiError>,
1248 pub GetSourceDebugExtension: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, source_debug_extension_ptr: *mut *mut c_char) -> jvmtiError>,
1249 pub IsMethodObsolete: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, method: jmethodID, is_obsolete_ptr: *mut jboolean) -> jvmtiError>,
1250 pub SuspendThreadList: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, request_count: jint, request_list: *const jthread, results: *mut jvmtiError) -> jvmtiError>,
1251 pub ResumeThreadList: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, request_count: jint, request_list: *const jthread, results: *mut jvmtiError) -> jvmtiError>,
1252 pub reserved94: *mut c_void,
1253 pub reserved95: *mut c_void,
1254 pub reserved96: *mut c_void,
1255 pub reserved97: *mut c_void,
1256 pub reserved98: *mut c_void,
1257 pub reserved99: *mut c_void,
1258 pub GetAllStackTraces: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, max_frame_count: jint, stack_info_ptr: *mut *mut jvmtiStackInfo, thread_count_ptr: *mut jint) -> jvmtiError>,
1259 pub GetThreadListStackTraces: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread_count: jint, thread_list: *const jthread, max_frame_count: jint, stack_info_ptr: *mut *mut jvmtiStackInfo) -> jvmtiError>,
1260 pub GetThreadLocalStorage: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, data_ptr: *mut *mut c_void) -> jvmtiError>,
1261 pub SetThreadLocalStorage: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, data: *const c_void) -> jvmtiError>,
1262 pub GetStackTrace: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, start_depth: jint, max_frame_count: jint, frame_buffer: *mut jvmtiFrameInfo, count_ptr: *mut jint) -> jvmtiError>,
1263 pub reserved105: *mut c_void,
1264 pub GetTag: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, object: jobject, tag_ptr: *mut jlong) -> jvmtiError>,
1265 pub SetTag: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, object: jobject, tag: jlong) -> jvmtiError>,
1266 pub ForceGarbageCollection: Option<unsafe extern "C" fn(env: *mut jvmtiEnv) -> jvmtiError>,
1267 pub IterateOverObjectsReachableFromObject: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, object: jobject, object_reference_callback: jvmtiObjectReferenceCallback, user_data: *const c_void) -> jvmtiError>,
1268 pub IterateOverReachableObjects: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, heap_root_callback: jvmtiHeapRootCallback, stack_ref_callback: jvmtiStackReferenceCallback, object_ref_callback: jvmtiObjectReferenceCallback, user_data: *const c_void) -> jvmtiError>,
1269 pub IterateOverHeap: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, object_filter: jvmtiHeapObjectFilter, heap_object_callback: jvmtiHeapObjectCallback, user_data: *const c_void) -> jvmtiError>,
1270 pub IterateOverInstancesOfClass: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, object_filter: jvmtiHeapObjectFilter, heap_object_callback: jvmtiHeapObjectCallback, user_data: *const c_void) -> jvmtiError>,
1271 pub reserved113: *mut c_void,
1272 pub GetObjectsWithTags: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, tag_count: jint, tags: *const jlong, count_ptr: *mut jint, object_result_ptr: *mut *mut jobject, tag_result_ptr: *mut *mut jlong) -> jvmtiError>,
1273 pub FollowReferences: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, heap_filter: jint, klass: jclass, initial_object: jobject, callbacks: *const jvmtiHeapCallbacks, user_data: *const c_void) -> jvmtiError>,
1274 pub IterateThroughHeap: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, heap_filter: jint, klass: jclass, callbacks: *const jvmtiHeapCallbacks, user_data: *const c_void) -> jvmtiError>,
1275 pub reserved117: *mut c_void,
1276 pub reserved118: *mut c_void,
1277 pub reserved119: *mut c_void,
1278 pub SetJNIFunctionTable: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, function_table: *const JNINativeInterface_) -> jvmtiError>,
1279 pub GetJNIFunctionTable: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, function_table: *mut *mut JNINativeInterface_) -> jvmtiError>,
1280 pub SetEventCallbacks: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, callbacks: *const jvmtiEventCallbacks, size_of_callbacks: jint) -> jvmtiError>,
1281 pub GenerateEvents: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, event_type: jvmtiEvent) -> jvmtiError>,
1282 pub GetExtensionFunctions: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, extension_count_ptr: *mut jint, extensions: *mut *mut jvmtiExtensionFunctionInfo) -> jvmtiError>,
1283 pub GetExtensionEvents: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, extension_count_ptr: *mut jint, extensions: *mut *mut jvmtiExtensionEventInfo) -> jvmtiError>,
1284 pub SetExtensionEventCallback: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, extension_event_index: jint, callback: jvmtiExtensionEvent) -> jvmtiError>,
1285 pub DisposeEnvironment: Option<unsafe extern "C" fn(env: *mut jvmtiEnv) -> jvmtiError>,
1286 pub GetErrorName: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, error: jvmtiError, name_ptr: *mut *mut c_char) -> jvmtiError>,
1287 pub GetJLocationFormat: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, format_ptr: *mut jvmtiJlocationFormat) -> jvmtiError>,
1288 pub GetSystemProperties: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, count_ptr: *mut jint, property_ptr: *mut *mut *mut c_char) -> jvmtiError>,
1289 pub GetSystemProperty: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, property: *const c_char, value_ptr: *mut *mut c_char) -> jvmtiError>,
1290 pub SetSystemProperty: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, property: *const c_char, value: *const c_char) -> jvmtiError>,
1291 pub GetPhase: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, phase_ptr: *mut jvmtiPhase) -> jvmtiError>,
1292 pub GetCurrentThreadCpuTimerInfo: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, info_ptr: *mut jvmtiTimerInfo) -> jvmtiError>,
1293 pub GetCurrentThreadCpuTime: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, nanos_ptr: *mut jlong) -> jvmtiError>,
1294 pub GetThreadCpuTimerInfo: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, info_ptr: *mut jvmtiTimerInfo) -> jvmtiError>,
1295 pub GetThreadCpuTime: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, nanos_ptr: *mut jlong) -> jvmtiError>,
1296 pub GetTimerInfo: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, info_ptr: *mut jvmtiTimerInfo) -> jvmtiError>,
1297 pub GetTime: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, nanos_ptr: *mut jlong) -> jvmtiError>,
1298 pub GetPotentialCapabilities: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, capabilities_ptr: *mut jvmtiCapabilities) -> jvmtiError>,
1299 pub reserved141: *mut c_void,
1300 pub AddCapabilities: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, capabilities_ptr: *const jvmtiCapabilities) -> jvmtiError>,
1301 pub RelinquishCapabilities: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, capabilities_ptr: *const jvmtiCapabilities) -> jvmtiError>,
1302 pub GetAvailableProcessors: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, processor_count_ptr: *mut jint) -> jvmtiError>,
1303 pub GetClassVersionNumbers: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, minor_version_ptr: *mut jint, major_version_ptr: *mut jint) -> jvmtiError>,
1304 pub GetConstantPool: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, klass: jclass, constant_pool_count_ptr: *mut jint, constant_pool_byte_count_ptr: *mut jint, constant_pool_bytes_ptr: *mut *mut c_uchar) -> jvmtiError>,
1305 pub GetEnvironmentLocalStorage: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, data_ptr: *mut *mut c_void) -> jvmtiError>,
1306 pub SetEnvironmentLocalStorage: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, data: *const c_void) -> jvmtiError>,
1307 pub AddToBootstrapClassLoaderSearch: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, segment: *const c_char) -> jvmtiError>,
1308 pub SetVerboseFlag: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, flag: jvmtiVerboseFlag, value: jboolean) -> jvmtiError>,
1309 pub AddToSystemClassLoaderSearch: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, segment: *const c_char) -> jvmtiError>,
1310 pub RetransformClasses: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, class_count: jint, classes: *const jclass) -> jvmtiError>,
1311 pub GetOwnedMonitorStackDepthInfo: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, monitor_info_count_ptr: *mut jint, monitor_info_ptr: *mut *mut jvmtiMonitorStackDepthInfo) -> jvmtiError>,
1312 pub GetObjectSize: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, object: jobject, size_ptr: *mut jlong) -> jvmtiError>,
1313 pub GetLocalInstance: Option<unsafe extern "C" fn(env: *mut jvmtiEnv, thread: jthread, depth: jint, value_ptr: *mut jobject) -> jvmtiError>,
1314}
1315impl Clone for jvmtiInterface_1 {
1316 fn clone(&self) -> Self {
1317 *self
1318 }
1319}
1320impl Default for jvmtiInterface_1 {
1321 fn default() -> Self {
1322 unsafe { mem::zeroed() }
1323 }
1324}
1325
1326#[repr(C)]
1327#[derive(Copy)]
1328pub struct _jvmtiEnv {
1329 pub functions: *const jvmtiInterface_1,
1330}
1331impl Clone for _jvmtiEnv {
1332 fn clone(&self) -> Self {
1333 *self
1334 }
1335}
1336impl Default for _jvmtiEnv {
1337 fn default() -> Self {
1338 unsafe { mem::zeroed() }
1339 }
1340}
1341