1 /* jvmti.h - Java Virtual Machine Tool Interface
2 Copyright (C) 2006 Free Software Foundation
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
39 /* Note: this file must be compilable by the C compiler (for now,
40 assuming GNU C is ok). This means you must never use `//'
41 comments, and all C++-specific code must be conditional on
44 #ifndef _CLASSPATH_JVMTI_H
45 #define _CLASSPATH_JVMTI_H
48 /* The VM might define JVMTI base types */
49 #ifndef _CLASSPATH_VM_JVMTI_TYPES_DEFINED
51 typedef jobject jthread
;
52 typedef jobject jthreadGroup
;
53 typedef jlong jlocation
;
54 typedef struct _Jv_rawMonitorID
*jrawMonitorID
;
56 #endif /* !_CLASSPATH_VM_JVMTI_TYPES_DEFINED */
59 #define JVMTI_VERSION_1_0 0x30010000
60 #define JVMTI_VERSION (JVMTI_VERSION_1_0 + 38) /* Spec version is 1.0.38 */
67 /* These functions might be defined in libraries which we load; the
68 JVMTI implementation calls them at the appropriate times. */
69 extern JNIEXPORT jint JNICALL
Agent_OnLoad (JavaVM
*vm
, char *options
,
71 extern JNIEXPORT
void JNICALL
Agent_OnUnload (JavaVM
*vm
);
77 /* Forward declarations */
78 typedef struct _jvmtiAddrLocationMap jvmtiAddrLocationMap
;
80 typedef struct _Jv_JVMTIEnv jvmtiEnv
;
82 typedef const struct _Jv_jvmtiEnv jvmtiEnv
;
91 /* Universal Errors */
93 JVMTI_ERROR_NULL_POINTER
= 100,
94 JVMTI_ERROR_OUT_OF_MEMORY
= 110,
95 JVMTI_ERROR_ACCESS_DENIED
= 111,
96 JVMTI_ERROR_WRONG_PHASE
= 112,
97 JVMTI_ERROR_INTERNAL
= 113,
98 JVMTI_ERROR_UNATTACHED_THREAD
= 115,
99 JVMTI_ERROR_INVALID_ENVIRONMENT
= 116,
101 /* Function-specific Required Errors */
102 JVMTI_ERROR_INVALID_PRIORITY
= 12,
103 JVMTI_ERROR_THREAD_NOT_SUSPENDED
= 13,
104 JVMTI_ERROR_THREAD_SUSPENDED
= 14,
105 JVMTI_ERROR_THREAD_NOT_ALIVE
= 15,
106 JVMTI_ERROR_CLASS_NOT_PREPARED
= 22,
107 JVMTI_ERROR_NO_MORE_FRAMES
= 31,
108 JVMTI_ERROR_OPAQUE_FRAME
= 32,
109 JVMTI_ERROR_DUPLICATE
= 40,
110 JVMTI_ERROR_NOT_FOUND
= 41,
111 JVMTI_ERROR_NOT_MONITOR_OWNER
= 51,
112 JVMTI_ERROR_INTERRUPT
= 52,
113 JVMTI_ERROR_UNMODIFIABLE_CLASS
= 79,
114 JVMTI_ERROR_NOT_AVAILABLE
= 98,
115 JVMTI_ERROR_ABSENT_INFORMATION
= 101,
116 JVMTI_ERROR_INVALID_EVENT_TYPE
= 102,
117 JVMTI_ERROR_NATIVE_METHOD
= 104,
119 /* Function-specific Agent Errors */
120 JVMTI_ERROR_INVALID_THREAD
= 10,
121 JVMTI_ERROR_INVALID_THREAD_GROUP
= 11,
122 JVMTI_ERROR_INVALID_OBJECT
= 20,
123 JVMTI_ERROR_INVALID_CLASS
= 21,
124 JVMTI_ERROR_INVALID_METHODID
= 23,
125 JVMTI_ERROR_INVALID_LOCATION
= 24,
126 JVMTI_ERROR_INVALID_FIELDID
= 25,
127 JVMTI_ERROR_TYPE_MISMATCH
= 34,
128 JVMTI_ERROR_INVALID_SLOT
= 35,
129 JVMTI_ERROR_INVALID_MONITOR
= 50,
130 JVMTI_ERROR_INVALID_CLASS_FORMAT
= 60,
131 JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION
= 61,
132 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED
= 63,
133 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED
= 64,
134 JVMTI_ERROR_INVALID_TYPESTATE
= 65,
135 JVMTI_ERROR_FAILS_VERIFICATION
= 62,
136 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED
= 66,
137 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED
= 67,
138 JVMTI_ERROR_UNSUPPORTED_VERSION
= 68,
139 JVMTI_ERROR_NAMES_DONT_MATCH
= 69,
140 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED
= 70,
141 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED
= 71,
142 JVMTI_ERROR_MUST_POSSESS_CAPABILITY
= 99,
143 JVMTI_ERROR_ILLEGAL_ARGUMENT
= 103,
147 * Enumeration Definitions
158 JVMTI_HEAP_OBJECT_TAGGED
= 1,
159 JVMTI_HEAP_OBJECT_UNTAGGED
= 2,
160 JVMTI_HEAP_OBJECT_EITHER
= 3
161 } jvmtiHeapObjectFilter
;
165 JVMTI_HEAP_ROOT_JNI_GLOBAL
= 1,
166 JVMTI_HEAP_ROOT_SYSTEM_CLASS
= 2,
167 JVMTI_HEAP_ROOT_MONITOR
= 3,
168 JVMTI_HEAP_ROOT_STACK_LOCAL
= 4,
169 JVMTI_HEAP_ROOT_JNI_LOCAL
= 5,
170 JVMTI_HEAP_ROOT_THREAD
= 6,
171 JVMTI_HEAP_ROOT_OTHER
= 7
176 JVMTI_ITERATION_ABORT
= 0,
177 JVMTI_ITERATION_CONTINUE
= 1,
178 JVMTI_ITERATION_IGNORE
= 2
179 } jvmtiIterationControl
;
183 JVMTI_JLOCATION_OTHER
= 0,
184 JVMTI_JLOCATION_JVMBCI
= 1,
185 JVMTI_JLOCATION_MACHINEPC
= 2
186 } jvmtiJlocationFormat
;
190 JVMTI_REFERENCE_CLASS
= 1,
191 JVMTI_REFERENCE_FIELD
= 2,
192 JVMTI_REFERENCE_ARRAY_ELEMENT
= 3,
193 JVMTI_REFERENCE_CLASS_LOADER
= 4,
194 JVMTI_REFERENCE_SIGNERS
= 5,
195 JVMTI_REFERENCE_PROTECTION_DOMAIN
= 6,
196 JVMTI_REFERENCE_INTERFACE
= 7,
197 JVMTI_REFERENCE_STATIC_FIELD
= 8,
198 JVMTI_REFERENCE_CONSTANT_POOL
= 9
199 } jvmtiObjectReferenceKind
;
204 JVMTI_KIND_IN_PTR
= 92,
205 JVMTI_KIND_IN_BUF
= 93,
206 JVMTI_KIND_ALLOC_BUF
= 94,
207 JVMTI_KIND_ALLOC_ALLOC_BUF
= 95,
209 JVMTI_KIND_OUT_BUF
= 97
214 JVMTI_TYPE_JBYTE
= 101,
215 JVMTI_TYPE_JCHAR
= 102,
216 JVMTI_TYPE_JSHORT
= 103,
217 JVMTI_TYPE_JINT
= 104,
218 JVMTI_TYPE_JLONG
= 105,
219 JVMTI_TYPE_JFLOAT
= 106,
220 JVMTI_TYPE_JDOUBLE
= 107,
221 JVMTI_TYPE_JBOOLEAN
= 108,
222 JVMTI_TYPE_JOBJECT
= 109,
223 JVMTI_TYPE_JTHREAD
= 110,
224 JVMTI_TYPE_JCLASS
= 111,
225 JVMTI_TYPE_JVALUE
= 112,
226 JVMTI_TYPE_JFIELDID
= 113,
227 JVMTI_TYPE_JMETHODID
= 114,
228 JVMTI_TYPE_CCHAR
= 115,
229 JVMTI_TYPE_CVOID
= 116,
230 JVMTI_TYPE_JNIENV
= 117
235 JVMTI_PHASE_ONLOAD
= 1,
236 JVMTI_PHASE_PRIMORDIAL
= 2,
237 JVMTI_PHASE_LIVE
= 4,
238 JVMTI_PHASE_START
= 6,
244 JVMTI_TIMER_USER_CPU
= 30,
245 JVMTI_TIMER_TOTAL_CPU
= 31,
246 JVMTI_TIMER_ELAPSED
= 32
251 JVMTI_VERBOSE_OTHER
= 0,
252 JVMTI_VERBOSE_GC
= 1,
253 JVMTI_VERBOSE_CLASS
= 2,
254 JVMTI_VERBOSE_JNI
= 4
257 /* Version information */
258 #define JVMTI_VERSION_INTERFACE_JNI 0x00000000
259 #define JVMTI_VERSION_INTERFACE_JVMTI 0x30000000
260 #define JVMTI_VERSION_MASK_INTERFACE_TYPE 0x70000000
261 #define JVMTI_VERSION_MASK_MAJOR 0x0FFF0000
262 #define JVMTI_VERSION_MASK_MINOR 0x0000FF00
263 #define JVMTI_VERSION_MASK_MICRO 0x000000FF
264 #define JVMTI_VERSION_SHIFT_MAJOR 16
265 #define JVMTI_VERSION_SHIFT_MINOR 8
266 #define JVMTI_VERSION_SHIFT_MICRO 0
269 * Events and event callbacks
274 JVMTI_EVENT_VM_INIT
= 50,
275 JVMTI_EVENT_VM_DEATH
= 51,
276 JVMTI_EVENT_THREAD_START
= 52,
277 JVMTI_EVENT_THREAD_END
= 53,
278 JVMTI_EVENT_CLASS_FILE_LOAD_HOOK
= 54,
279 JVMTI_EVENT_CLASS_LOAD
= 55,
280 JVMTI_EVENT_CLASS_PREPARE
= 56,
281 JVMTI_EVENT_VM_START
= 57,
282 JVMTI_EVENT_EXCEPTION
= 58,
283 JVMTI_EVENT_EXCEPTION_CATCH
= 59,
284 JVMTI_EVENT_SINGLE_STEP
= 60,
285 JVMTI_EVENT_FRAME_POP
= 61,
286 JVMTI_EVENT_BERAKPOINT
= 62,
287 JVMTI_EVENT_FIELD_ACCESS
= 63,
288 JVMTI_EVENT_FIELD_MODIFICATION
= 64,
289 JVMTI_EVENT_METHOD_ENTRY
= 65,
290 JVMTI_EVENT_METHOD_EXIT
= 66,
291 JVMTI_EVENT_NATIVE_METHOD_BIND
= 67,
292 JVMTI_EVENT_COMPILED_METHOD_LOAD
= 68,
293 JVMTI_EVENT_COMPILED_METHOD_UNLOAD
= 69,
294 JVMTI_EVENT_DYNAMIC_CODE_GENERATED
= 70,
295 JVMTI_EVENT_DATA_DUMP_REQUEST
= 71,
296 JVMTI_EVENT_MONITOR_WAIT
= 73,
297 JVMTI_EVENT_MONITOR_WAITED
= 74,
298 JVMTI_EVENT_MONITOR_CONTENDED_ENTER
= 75,
299 JVMTI_EVENT_MONITOR_CONTENDED_ENTERED
= 76,
300 JVMTI_EVENT_GARBAGE_COLLECTION_START
= 81,
301 JVMTI_EVENT_GARBAGE_COLLECTION_FINISH
= 82,
302 JVMTI_EVENT_OBJECT_FREE
= 83,
303 JVMTI_EVENT_VM_OBJECT_ALLOC
= 84
306 typedef void *jvmtiEventReserved
;
308 typedef void (JNICALL
*jvmtiEventSingleStep
)
309 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jmethodID method
,
312 typedef void (JNICALL
*jvmtiEventBreakpoint
)
313 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jmethodID method
,
316 typedef void (JNICALL
*jvmtiEventFieldAccess
)
317 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jmethodID method
,
318 jlocation location
, jclass field_klass
, jobject object
, jfieldID field
);
320 typedef void (JNICALL
*jvmtiEventFieldModification
)
321 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jmethodID method
,
322 jlocation location
, jclass field_klass
, jobject object
, jfieldID field
,
323 char signature_type
, jvalue new_value
);
325 typedef void (JNICALL
*jvmtiEventFramePop
)
326 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jmethodID method
,
327 jboolean was_popped_by_exception
);
329 typedef void (JNICALL
*jvmtiEventMethodEntry
)
330 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jmethodID method
);
332 typedef void (JNICALL
*jvmtiEventMethodExit
)
333 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jmethodID method
,
334 jboolean was_popped_by_exception
, jvalue return_value
);
336 typedef void (JNICALL
*jvmtiEventNativeMethodBind
)
337 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jmethodID method
,
338 void *address
, void **new_address_ptr
);
340 typedef void (JNICALL
*jvmtiEventException
)
341 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jmethodID method
,
342 jlocation location
, jobject exception
, jmethodID catch_method
,
343 jlocation catch_location
);
345 typedef void (JNICALL
*jvmtiEventExceptionCatch
)
346 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jmethodID method
,
347 jlocation location
, jobject exception
);
349 typedef void (JNICALL
*jvmtiEventThreadStart
)
350 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
);
352 typedef void (JNICALL
*jvmtiEventThreadEnd
)
353 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
);
355 typedef void (JNICALL
*jvmtiEventClassLoad
)
356 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jclass klass
);
358 typedef void (JNICALL
*jvmtiEventClassPrepare
)
359 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thraed
, jclass klass
);
361 typedef void (JNICALL
*jvmtiEventClassFileLoadHook
)
362 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jclass class_being_redefined
,
363 jobject loader
, const char *name
, jobject protection_domain
,
364 jint class_data_len
, const unsigned char *class_data
,
365 jint
*new_class_data_len
, unsigned char **new_class_data
);
367 typedef void (JNICALL
*jvmtiEventVMStart
)
368 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
);
370 typedef void (JNICALL
*jvmtiEventVMInit
)
371 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
);
373 typedef void (JNICALL
*jvmtiEventVMDeath
)
374 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
);
376 typedef void (JNICALL
*jvmtiEventCompiledMethodLoad
)
377 (jvmtiEnv
*jvmti_env
, jmethodID method
, jint code_size
,
378 const void *code_addr
, jint map_length
, const jvmtiAddrLocationMap
*map
,
379 const void *compile_info
);
381 typedef void (JNICALL
*jvmtiEventCompiledMethodUnload
)
382 (jvmtiEnv
*jvmti_env
, jmethodID method
, const void *code_addr
);
384 typedef void (JNICALL
*jvmtiEventDynamicCodeGenerated
)
385 (jvmtiEnv
*jvmti_env
, const char *name
, const void *address
, jint length
);
387 typedef void (JNICALL
*jvmtiEventDataDumpRequest
)
388 (jvmtiEnv
*jvmti_env
);
390 typedef void (JNICALL
*jvmtiEventMonitorContendedEnter
)
391 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jobject object
);
393 typedef void (JNICALL
*jvmtiEventMonitorContendedEntered
)
394 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jobject object
);
396 typedef void (JNICALL
*jvmtiEventMonitorWait
)
397 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jobject object
,
400 typedef void (JNICALL
*jvmtiEventMonitorWaited
)
401 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jobject object
,
404 typedef void (JNICALL
*jvmtiEventVMObjectAlloc
)
405 (jvmtiEnv
*jvmti_env
, JNIEnv
*jni_env
, jthread thread
, jobject object
,
406 jclass object_klass
, jlong size
);
408 typedef void (JNICALL
*jvmtiEventObjectFree
)
409 (jvmtiEnv
*jvmti_env
, jlong tag
);
411 typedef void (JNICALL
*jvmtiEventGarbageCollectionStart
)
412 (jvmtiEnv
*jvmti_env
);
414 typedef void (JNICALL
*jvmtiEventGarbageCollectionFinish
)
415 (jvmtiEnv
*jvmti_env
);
419 jvmtiEventVMInit VMInit
;
420 jvmtiEventVMDeath VMDeath
;
421 jvmtiEventThreadStart ThreadStart
;
422 jvmtiEventThreadEnd ThreadEnd
;
423 jvmtiEventClassFileLoadHook ClassFileLoadHook
;
424 jvmtiEventClassLoad ClassLoad
;
425 jvmtiEventClassPrepare ClassPrepare
;
426 jvmtiEventVMStart VMStart
;
427 jvmtiEventException Exception
;
428 jvmtiEventExceptionCatch ExceptionCatch
;
429 jvmtiEventSingleStep SingleStep
;
430 jvmtiEventFramePop FramePop
;
431 jvmtiEventBreakpoint Breakpoint
;
432 jvmtiEventFieldAccess FieldAccess
;
433 jvmtiEventFieldModification FieldModification
;
434 jvmtiEventMethodEntry MethodEntry
;
435 jvmtiEventMethodExit MethodExit
;
436 jvmtiEventNativeMethodBind NativeMethodBind
;
437 jvmtiEventCompiledMethodLoad CompiledMethodLoad
;
438 jvmtiEventCompiledMethodUnload CompiledMethodUnload
;
439 jvmtiEventDynamicCodeGenerated DynamicCodeGenerated
;
440 jvmtiEventDataDumpRequest DataDumpRequest
;
441 jvmtiEventReserved reserved72
;
442 jvmtiEventMonitorWait MonitorWait
;
443 jvmtiEventMonitorWaited MonitorWaited
;
444 jvmtiEventMonitorContendedEnter MonitorContendedEnter
;
445 jvmtiEventMonitorContendedEntered MonitorContendedEntered
;
446 jvmtiEventReserved reserved77
;
447 jvmtiEventReserved reserved78
;
448 jvmtiEventReserved reserved79
;
449 jvmtiEventReserved reserved80
;
450 jvmtiEventGarbageCollectionStart GarbageCollectionStart
;
451 jvmtiEventGarbageCollectionFinish GarbageCollectionFinish
;
452 jvmtiEventObjectFree ObjectFree
;
453 jvmtiEventVMObjectAlloc VMObjectAlloc
;
454 } jvmtiEventCallbacks
;
457 * Function and Structure Type Definitions
460 struct _jvmtiAddrLocationMap
462 const void *start_address
;
468 unsigned int can_tag_objects
: 1;
469 unsigned int can_generate_field_modification_events
: 1;
470 unsigned int can_generate_field_access_events
: 1;
471 unsigned int can_get_bytecodes
: 1;
472 unsigned int can_get_synthetic_attribute
: 1;
473 unsigned int can_get_owned_monitor_info
: 1;
474 unsigned int can_get_current_contended_monitor
: 1;
475 unsigned int can_get_monitor_info
: 1;
476 unsigned int can_pop_frame
: 1;
477 unsigned int can_redefine_classes
: 1;
478 unsigned int can_signal_thread
: 1;
479 unsigned int can_get_source_file_name
: 1;
480 unsigned int can_get_line_numbers
: 1;
481 unsigned int can_get_source_debug_extension
: 1;
482 unsigned int can_access_local_variables
: 1;
483 unsigned int can_maintain_original_method_order
: 1;
484 unsigned int can_generate_single_step_events
: 1;
485 unsigned int can_generate_exception_events
: 1;
486 unsigned int can_generate_frame_pop_events
: 1;
487 unsigned int can_generate_breakpoint_events
: 1;
488 unsigned int can_suspend
: 1;
489 unsigned int can_redefine_any_class
: 1;
490 unsigned int can_get_current_thread_cpu_time
: 1;
491 unsigned int can_get_thread_cpu_time
: 1;
492 unsigned int can_generate_method_entry_events
: 1;
493 unsigned int can_generate_method_exit_events
: 1;
494 unsigned int can_generate_all_class_hook_events
: 1;
495 unsigned int can_generate_compiled_method_load_events
: 1;
496 unsigned int can_generate_monitor_events
: 1;
497 unsigned int can_generate_vm_object_alloc_events
: 1;
498 unsigned int can_generate_native_method_bind_events
: 1;
499 unsigned int can_generate_garbage_collection_events
: 1;
500 unsigned int can_generate_object_free_events
: 1;
512 jint class_byte_count
;
513 const unsigned char *class_bytes
;
514 } jvmtiClassDefinition
;
520 jvmtiParamTypes base_type
;
526 jint extension_event_index
;
528 char *short_description
;
530 jvmtiParamInfo
* params
;
531 } jvmtiExtensionEventInfo
;
533 typedef jvmtiError (JNICALL
*jvmtiExtensionFunction
)
534 (jvmtiEnv
*jvmti_enf
, ...);
538 jvmtiExtensionFunction func
;
540 char *short_description
;
542 jvmtiParamInfo
*params
;
545 } jvmtiExtensionFunctionInfo
;
555 jlocation start_location
;
557 } jvmtiLineNumberEntry
;
561 jlocation start_location
;
565 char *generic_signature
;
567 } jvmtiLocalVariableEntry
;
575 jint notify_waiter_count
;
576 jthread
*notify_waiters
;
583 jvmtiFrameInfo
*frame_buffer
;
593 } jvmtiThreadGroupInfo
;
600 jthreadGroup thread_group
;
601 jobject context_class_loader
;
607 jboolean may_skip_forward
;
608 jboolean may_skip_backward
;
614 typedef void (JNICALL
*jvmtiExtensionEvent
)
615 (jvmtiEnv
*jvmti_env
, ...);
617 typedef jvmtiIterationControl (JNICALL
*jvmtiHeapObjectCallback
)
618 (jlong class_tag
, jlong size
, jlong
*tag_ptr
, void *user_data
);
620 typedef jvmtiIterationControl (JNICALL
*jvmtiHeapRootCallback
)
621 (jvmtiHeapRootKind root_kind
, jlong class_tag
, jlong size
, jlong
*tag_ptr
,
624 typedef jvmtiIterationControl (JNICALL
*jvmtiObjectReferenceCallback
)
625 (jvmtiObjectReferenceKind reference_kind
, jlong class_tag
, jlong size
,
626 jlong
*tag_ptr
, jlong referrer_tag
, jint referrer_index
, void *user_data
);
628 typedef jvmtiIterationControl (JNICALL
*jvmtiStackReferenceCallback
)
629 (jvmtiHeapRootKind root_kind
, jlong class_tag
, jlong size
, jlong
*tag_ptr
,
630 jlong thread_tag
, jint depth
, jmethodID method
, jint slot
, void *user_data
);
632 typedef void (JNICALL
*jvmtiStartFunction
)
633 (jvmtiEnv
*env
, JNIEnv
*jni_env
, void *arg
);
636 * JVM Tool Interface Base Types
638 typedef struct JNINativeInterface jniNativeInterface
;
644 jvmtiError (JNICALL
*SetEventNotificationMode
) (jvmtiEnv
*env
,
646 jvmtiEvent event_type
,
647 jthread event_thread
, ...);
650 jvmtiError (JNICALL
*GetAllThreads
) (jvmtiEnv
*env
,
651 jint
*threads_count_ptr
,
652 jthread
**threads_ptr
);
654 jvmtiError (JNICALL
*SuspendThread
) (jvmtiEnv
*env
,
657 jvmtiError (JNICALL
*ResumeThread
) (jvmtiEnv
*env
,
660 jvmtiError (JNICALL
*StopThread
) (jvmtiEnv
*env
,
663 jvmtiError (JNICALL
*InterruptThread
) (jvmtiEnv
*env
,
666 jvmtiError (JNICALL
*GetThreadInfo
) (jvmtiEnv
*env
,
668 jvmtiThreadInfo
*info_ptr
);
670 jvmtiError (JNICALL
*GetOwnedMonitorInfo
) (jvmtiEnv
*env
,
672 jint
*owned_monitor_count_ptr
,
673 jobject
**owned_monitors_ptr
);
675 jvmtiError (JNICALL
*GetCurrentContendedMonitor
) (jvmtiEnv
*env
,
677 jobject
*monitor_ptr
);
679 jvmtiError (JNICALL
*RunAgentThread
) (jvmtiEnv
*env
,
681 jvmtiStartFunction proc
,
685 jvmtiError (JNICALL
*GetTopThreadGroups
) (jvmtiEnv
*env
,
686 jint
*group_count_ptr
,
687 jthreadGroup
**groups_ptr
);
689 jvmtiError (JNICALL
*GetThreadGroupInfo
) (jvmtiEnv
*env
,
691 jvmtiThreadGroupInfo
*info_ptr
);
693 jvmtiError (JNICALL
*GetThreadGroupChildren
) (jvmtiEnv
*env
,
695 jint
*thread_count_ptr
,
696 jthread
**threads_ptr
,
697 jint
*group_count_ptr
,
698 jthreadGroup
**groups_ptr
);
699 jvmtiError (JNICALL
*GetFrameCount
) (jvmtiEnv
*env
,
703 jvmtiError (JNICALL
*GetThreadState
) (jvmtiEnv
*env
,
705 jint
*thread_state_ptr
);
709 jvmtiError (JNICALL
*GetFrameLocation
) (jvmtiEnv
*env
,
712 jmethodID
*method_ptr
,
713 jlocation
*location_ptr
);
715 jvmtiError (JNICALL
*NotifyPopFrame
) (jvmtiEnv
*env
,
719 jvmtiError (JNICALL
*GetLocalObject
) (jvmtiEnv
*env
,
725 jvmtiError (JNICALL
*GetLocalInt
) (jvmtiEnv
*env
,
731 jvmtiError (JNICALL
*GetLocalLong
) (jvmtiEnv
*env
,
737 jvmtiError (JNICALL
*GetLocalFloat
) (jvmtiEnv
*env
,
743 jvmtiError (JNICALL
*GetLocalDouble
) (jvmtiEnv
*env
,
749 jvmtiError (JNICALL
*SetLocalObject
) (jvmtiEnv
*env
,
755 jvmtiError (JNICALL
*SetLocalInt
) (jvmtiEnv
*env
,
761 jvmtiError (JNICALL
*SetLocalLong
) (jvmtiEnv
*env
,
767 jvmtiError (JNICALL
*SetLocalFloat
) (jvmtiEnv
*env
,
773 jvmtiError (JNICALL
*SetLocalDouble
) (jvmtiEnv
*env
,
779 jvmtiError (JNICALL
*CreateRawMonitor
) (jvmtiEnv
*env
,
781 jrawMonitorID
*monitor_ptr
);
783 jvmtiError (JNICALL
*DestroyRawMonitor
) (jvmtiEnv
*env
,
784 jrawMonitorID monitor
);
786 jvmtiError (JNICALL
*RawMonitorEnter
) (jvmtiEnv
*env
,
787 jrawMonitorID monitor
);
789 jvmtiError (JNICALL
*RawMonitorExit
) (jvmtiEnv
*env
,
790 jrawMonitorID monitor
);
792 jvmtiError (JNICALL
*RawMonitorWait
) (jvmtiEnv
*env
,
793 jrawMonitorID monitor
);
795 jvmtiError (JNICALL
*RawMonitorNotify
) (jvmtiEnv
*env
,
796 jrawMonitorID monitor
);
798 jvmtiError (JNICALL
*RawMonitorNotifyAll
) (jvmtiEnv
*env
,
799 jrawMonitorID monitor
);
801 jvmtiError (JNICALL
*SetBreakpoint
) (jvmtiEnv
*env
,
805 jvmtiError (JNICALL
*ClearBreakpoint
) (jvmtiEnv
*env
,
811 jvmtiError (JNICALL
*SetFieldAccessWatch
) (jvmtiEnv
*env
,
815 jvmtiError (JNICALL
*ClearFieldAccessWatch
) (jvmtiEnv
*env
,
819 jvmtiError (JNICALL
*SetFieldModificationWatch
) (jvmtiEnv
*env
,
823 jvmtiError (JNICALL
*ClearFieldModificationWatch
) (jvmtiEnv
*env
,
829 jvmtiError (JNICALL
*Allocate
) (jvmtiEnv
*env
,
831 unsigned char **mem_ptr
);
833 jvmtiError (JNICALL
*Deallocate
) (jvmtiEnv
*env
,
836 jvmtiError (JNICALL
*GetClassSignature
) (jvmtiEnv
*env
,
838 char **signature_ptr
,
841 jvmtiError (JNICALL
*GetClassStatus
) (jvmtiEnv
*env
,
845 jvmtiError (JNICALL
*GetSourceFileName
) (jvmtiEnv
*env
,
847 char *source_name_ptr
);
849 jvmtiError (JNICALL
*GetClassModifiers
) (jvmtiEnv
*env
,
851 jint
*modifiers_ptr
);
853 jvmtiError (JNICALL
*GetClassMethods
) (jvmtiEnv
*env
,
855 jint
*method_count_ptr
,
856 jmethodID
**methods_ptr
);
858 jvmtiError (JNICALL
*GetClassFields
) (jvmtiEnv
*env
,
860 jint
*field_count_ptr
,
861 jfieldID
**fields_ptr
);
863 jvmtiError (JNICALL
*GetImplementedInterfaces
) (jvmtiEnv
*env
,
865 jint
*interface_count_ptr
,
866 jclass
**interfaces_ptr
);
868 jvmtiError (JNICALL
*IsInterface
) (jvmtiEnv
*env
,
870 jboolean
*is_interface_ptr
);
872 jvmtiError (JNICALL
*IsArrayClass
) (jvmtiEnv
*env
,
874 jboolean
*is_array_class_ptr
);
876 jvmtiError (JNICALL
*GetClassLoader
) (jvmtiEnv
*env
,
878 jobject
*classloader_ptr
);
880 jvmtiError (JNICALL
*GetObjectHashCode
) (jvmtiEnv
*env
,
882 jint
*hash_code_ptr
);
884 jvmtiError (JNICALL
*GetObjectMonitorUsage
) (jvmtiEnv
*env
,
886 jvmtiMonitorUsage
*info_ptr
);
888 jvmtiError (JNICALL
*GetFieldName
) (jvmtiEnv
*env
,
892 char **signature_ptr
,
895 jvmtiError (JNICALL
*GetFieldDeclaringClass
) (jvmtiEnv
*env
,
898 jclass
*declaring_class_ptr
);
900 jvmtiError (JNICALL
*GetFieldModifiers
) (jvmtiEnv
*env
,
903 jint
*modifiers_ptr
);
905 jvmtiError (JNICALL
*IsFieldSynthetic
) (jvmtiEnv
*env
,
908 jboolean
*is_synthetic_ptr
);
910 jvmtiError (JNICALL
*GetMethodName
) (jvmtiEnv
*env
,
913 char **signature_ptr
,
916 jvmtiError (JNICALL
*GetMethodDeclaringClass
) (jvmtiEnv
*env
,
918 jclass
*declaring_class_ptr
);
921 jvmtiError (JNICALL
*GetMethodModifiers
) (jvmtiEnv
*env
,
923 jint
*modifiers_ptr
);
927 jvmtiError (JNICALL
*GetMaxLocals
) (jvmtiEnv
*env
,
931 jvmtiError (JNICALL
*GetArgumentsSize
) (jvmtiEnv
*env
,
935 jvmtiError (JNICALL
*GetLineNumberTable
) (jvmtiEnv
*env
,
937 jint
*entry_count_ptr
,
938 jvmtiLineNumberEntry
**table_ptr
);
940 jvmtiError (JNICALL
*GetMethodLocation
) (jvmtiEnv
*env
,
942 jlocation
*start_location_ptr
,
943 jlocation
*end_location_ptr
);
945 jvmtiError (JNICALL
*GetLocalVariableTable
) (jvmtiEnv
*env
,
947 jint
*entry_count_ptr
,
948 jvmtiLocalVariableEntry
**table_ptr
);
954 jvmtiError (JNICALL
*GetBytecodes
) (jvmtiEnv
*env
,
956 jint
*bytecode_count_ptr
,
957 unsigned char **bytecodes_ptr
);
959 jvmtiError (JNICALL
*IsMethodNative
) (jvmtiEnv
*env
,
961 jboolean
*is_native_ptr
);
963 jvmtiError (JNICALL
*IsMethodSynthetic
) (jvmtiEnv
*env
,
965 jboolean
*is_synthetic_ptr
);
967 jvmtiError (JNICALL
*GetLoadedClasses
) (jvmtiEnv
*env
,
968 jint
*class_count_ptr
,
969 jclass
**classes_ptr
);
971 jvmtiError (JNICALL
*GetClassLoaderClasses
) (jvmtiEnv
*env
,
972 jobject initiating_loader
,
973 jint
*class_count_ptr
,
974 jclass
**classes_ptr
);
976 jvmtiError (JNICALL
*PopFrame
) (jvmtiEnv
*env
,
991 jvmtiError (JNICALL
*RedefineClasses
) (jvmtiEnv
*env
,
993 const jvmtiClassDefinition
* class_definitions
);
995 jvmtiError (JNICALL
*GetVersionNumber
) (jvmtiEnv
*env
,
998 jvmtiError (JNICALL
*GetCapabilities
) (jvmtiEnv
*env
,
999 jvmtiCapabilities
*capabilities_ptr
);
1001 jvmtiError (JNICALL
*GetSourceDebugExtension
) (jvmtiEnv
*env
,
1003 char **source_debug_extension_ptr
);
1005 jvmtiError (JNICALL
*IsMethodObsolete
) (jvmtiEnv
*env
,
1007 jboolean
*is_obsolete_ptr
);
1009 jvmtiError (JNICALL
*SuspendThreadList
) (jvmtiEnv
*env
,
1011 const jthread
*request_list
,
1012 jvmtiError
*results
);
1014 jvmtiError (JNICALL
*ResumeThreadList
) (jvmtiEnv
*env
,
1016 const jthread
*request_list
,
1017 jvmtiError
*results
);
1031 jvmtiError (JNICALL
*GetAllStackTraces
) (jvmtiEnv
*env
,
1032 jint max_frame_count
,
1033 jvmtiStackInfo
**stack_info_ptr
,
1034 jint
*thread_count_ptr
);
1036 jvmtiError (JNICALL
*GetThreadListStackTraces
) (jvmtiEnv
*env
,
1038 const jthread
*thread_list
,
1039 jint max_frame_count
,
1040 jvmtiStackInfo
**stack_info_ptr
);
1042 jvmtiError (JNICALL
*GetThreadLocalStorage
) (jvmtiEnv
*env
,
1046 jvmtiError (JNICALL
*SetThreadLocalStorage
) (jvmtiEnv
*env
,
1050 jvmtiError (JNICALL
*GetStackTrace
) (jvmtiEnv
*env
,
1053 jint max_frame_count
,
1054 jvmtiFrameInfo
*frame_buffer
,
1059 jvmtiError (JNICALL
*GetTag
) (jvmtiEnv
*env
,
1063 jvmtiError (JNICALL
*SetTag
) (jvmtiEnv
*env
,
1067 jvmtiError (JNICALL
*ForceGarbageCollection
) (jvmtiEnv
*env
);
1069 jvmtiError (JNICALL
*IterateOverObjectsReachableFromObject
) (jvmtiEnv
*env
,
1071 jvmtiObjectReferenceCallback object_reference_callback
,
1074 jvmtiError (JNICALL
*IterateOverReachableObjects
) (jvmtiEnv
*env
,
1075 jvmtiHeapRootCallback heap_root_callback
,
1076 jvmtiStackReferenceCallback stack_ref_callback
,
1077 jvmtiObjectReferenceCallback object_ref_callback
,
1080 jvmtiError (JNICALL
*IterateOverHeap
) (jvmtiEnv
*env
,
1081 jvmtiHeapObjectFilter object_filter
,
1082 jvmtiHeapObjectCallback heap_object_callback
,
1085 jvmtiError (JNICALL
*IterateOverInstanceOfClass
) (jvmtiEnv
*env
,
1087 jvmtiHeapObjectFilter object_filter
,
1088 jvmtiHeapObjectCallback heap_object_callback
,
1093 jvmtiError (JNICALL
*GetObjectsWithTags
) (jvmtiEnv
*env
,
1097 jobject
**object_result_ptr
,
1098 jlong
**tag_result_ptr
);
1110 jvmtiError (JNICALL
*SetJNIFunctionTable
) (jvmtiEnv
*env
,
1111 const jniNativeInterface
*function_table
);
1113 jvmtiError (JNICALL
*GetJNIFunctionTable
) (jvmtiEnv
*env
,
1114 jniNativeInterface
**function_table_ptr
);
1116 jvmtiError (JNICALL
*SetEventCallbacks
) (jvmtiEnv
*env
,
1117 const jvmtiEventCallbacks
*callbacks
,
1118 jint size_of_callbacks
);
1120 jvmtiError (JNICALL
*GenerateEvents
) (jvmtiEnv
*env
,
1121 jvmtiEvent event_type
);
1123 jvmtiError (JNICALL
*GetExtensionFunctions
) (jvmtiEnv
*env
,
1124 jint
*extension_count_ptr
,
1125 jvmtiExtensionFunctionInfo
**extensions
);
1127 jvmtiError (JNICALL
*GetExtensionEvents
) (jvmtiEnv
*env
,
1128 jint
*extension_count_ptr
,
1129 jvmtiExtensionEventInfo
**extensions
);
1131 jvmtiError (JNICALL
*SetExtensionEventCallback
) (jvmtiEnv
*env
,
1132 jint extension_event_index
,
1133 jvmtiExtensionEvent callback
);
1135 jvmtiError (JNICALL
*DisposeEnvironment
) (jvmtiEnv
*env
);
1137 jvmtiError (JNICALL
*GetErrorName
) (jvmtiEnv
*env
,
1141 jvmtiError (JNICALL
*GetJLocationFormat
) (jvmtiEnv
*env
,
1142 jvmtiJlocationFormat
*format_ptr
);
1144 jvmtiError (JNICALL
*GetSystemProperties
) (jvmtiEnv
*env
,
1146 char ***property_ptr
);
1148 jvmtiError (JNICALL
*GetSystemProperty
) (jvmtiEnv
*env
,
1149 const char *property
,
1152 jvmtiError (JNICALL
*SetSystemProperty
) (jvmtiEnv
*env
,
1153 const char *property
,
1156 jvmtiError (JNICALL
*GetPhase
) (jvmtiEnv
*env
,
1157 jvmtiPhase
*phase_ptr
);
1159 jvmtiError (JNICALL
*GetCurrentThreadCpuTimerInfo
) (jvmtiEnv
*env
,
1160 jvmtiTimerInfo
*info_ptr
);
1162 jvmtiError (JNICALL
*GetCurrentThreadCpuTime
) (jvmtiEnv
*env
,
1165 jvmtiError (JNICALL
*GetThreadCpuTimerInfo
) (jvmtiEnv
*env
,
1166 jvmtiTimerInfo
*info_ptr
);
1168 jvmtiError (JNICALL
*GetThreadCpuTime
) (jvmtiEnv
*env
,
1172 jvmtiError (JNICALL
*GetTimerInfo
) (jvmtiEnv
*env
,
1173 jvmtiTimerInfo
*info_ptr
);
1175 jvmtiError (JNICALL
*GetTime
) (jvmtiEnv
*env
,
1178 jvmtiError (JNICALL
*GetPotentialCapabilities
) (jvmtiEnv
*env
,
1179 jvmtiCapabilities
*capabilities_ptr
);
1183 jvmtiError (JNICALL
*AddCapabilities
) (jvmtiEnv
*env
,
1184 const jvmtiCapabilities
*capabilities_ptr
);
1186 jvmtiError (JNICALL
*RelinquishCapabilities
) (jvmtiEnv
*env
,
1187 const jvmtiCapabilities
*capabilities_ptr
);
1189 jvmtiError (JNICALL
*GetAvailableProcessors
) (jvmtiEnv
*env
,
1190 jint
*processor_count_ptr
);
1196 jvmtiError (JNICALL
*GetEnvironmentLocalStorage
) (jvmtiEnv
*env
,
1199 jvmtiError (JNICALL
*SetEnvironmentLocalStorage
) (jvmtiEnv
*env
,
1202 jvmtiError (JNICALL
*AddToBootstrapClassLoaderSearch
) (jvmtiEnv
*env
,
1203 const char *segment
);
1205 jvmtiError (JNICALL
*SetVerboseFlag
) (jvmtiEnv
*env
,
1206 jvmtiVerboseFlag flag
,
1215 jvmtiError (JNICALL
*GetObjectSize
) (jvmtiEnv
*env
,
1225 struct _Jv_jvmtiEnv
*p
;
1227 #ifdef _CLASSPATH_JVMTIENV_CONTENTS
1228 _CLASSPATH_JVMTIENV_CONTENTS
1231 jvmtiError
SetEventNotificationMode (jvmtiEventMode mode
,
1232 jvmtiEvent event_type
,
1233 jthread event_thread
, ...)
1236 va_start (args
, event_thread
);
1237 jvmtiError result
= p
->SetEventNotificationMode (this, mode
, event_type
,
1238 event_thread
, args
);
1243 jvmtiError
GetAllThreads (jint
*threads_count_ptr
, jthread
**threads_ptr
)
1244 { return p
->GetAllThreads (this, threads_count_ptr
, threads_ptr
); }
1246 jvmtiError
SuspendThread (jthread thread
)
1247 { return p
->SuspendThread (this, thread
); }
1249 jvmtiError
ResumeThread (jthread thread
)
1250 { return p
->ResumeThread (this, thread
); }
1252 jvmtiError
StopThread (jthread thread
)
1253 { return p
->StopThread (this, thread
); }
1255 jvmtiError
InterruptThread (jthread thread
)
1256 { return p
->InterruptThread (this, thread
); }
1258 jvmtiError
GetThreadInfo (jthread thread
, jvmtiThreadInfo
*info_ptr
)
1259 { return p
->GetThreadInfo (this, thread
, info_ptr
); }
1261 jvmtiError
GetOwnedMonitorInfo (jthread thread
,
1262 jint
*owned_monitor_count_ptr
,
1263 jobject
**owned_monitors_ptr
)
1265 return p
->GetOwnedMonitorInfo (this, thread
, owned_monitor_count_ptr
,
1266 owned_monitors_ptr
);
1269 jvmtiError
GetCurrentContendedMonitor (jthread thread
, jobject
*monitor_ptr
)
1270 { return p
->GetCurrentContendedMonitor (this, thread
, monitor_ptr
); }
1272 jvmtiError
RunAgentThread (jthread thread
, jvmtiStartFunction proc
,
1273 const void *arg
, jint priority
)
1274 { return p
->RunAgentThread (this, thread
, proc
, arg
, priority
); }
1276 jvmtiError
GetTopThreadGroups (jint
*group_count_ptr
,
1277 jthreadGroup
**groups_ptr
)
1278 { return p
->GetTopThreadGroups (this, group_count_ptr
, groups_ptr
); }
1280 jvmtiError
GetThreadGroupInfo (jthreadGroup group
,
1281 jvmtiThreadGroupInfo
*info_ptr
)
1282 { return p
->GetThreadGroupInfo (this, group
, info_ptr
); }
1284 jvmtiError
GetThreadGroupChildren (jthreadGroup group
,
1285 jint
*thread_count_ptr
,
1286 jthread
**threads_ptr
,
1287 jint
*group_count_ptr
,
1288 jthreadGroup
**groups_ptr
)
1290 return p
->GetThreadGroupChildren (this, group
, thread_count_ptr
,
1291 threads_ptr
, group_count_ptr
,
1295 jvmtiError
GetFrameCount (jthread thread
, jint
*count_ptr
)
1296 { return p
->GetFrameCount (this, thread
, count_ptr
); }
1298 jvmtiError
GetThreadState (jthread thread
, jint
*thread_state_ptr
)
1299 { return p
->GetThreadState (this, thread
, thread_state_ptr
); }
1301 jvmtiError
GetFrameLocation (jthread thread
, jint depth
,
1302 jmethodID
*method_ptr
, jlocation
*location_ptr
)
1304 return p
->GetFrameLocation (this, thread
, depth
, method_ptr
,
1308 jvmtiError
NotifyPopFrame (jthread thread
, jint depth
)
1309 { return p
->NotifyPopFrame (this, thread
, depth
); }
1311 jvmtiError
GetLocalObject (jthread thread
, jint depth
, jint slot
,
1313 { return p
->GetLocalObject (this, thread
, depth
, slot
, value_ptr
); }
1315 jvmtiError
GetLocalInt (jthread thread
, jint depth
, jint slot
,
1317 { return p
->GetLocalInt (this, thread
, depth
, slot
, value_ptr
); }
1319 jvmtiError
GetLocalLong (jthread thread
, jint depth
, jint slot
,
1321 { return p
->GetLocalLong (this, thread
, depth
, slot
, value_ptr
); }
1323 jvmtiError
GetLocalFloat (jthread thread
, jint depth
, jint slot
,
1325 { return p
->GetLocalFloat (this, thread
, depth
, slot
, value_ptr
); }
1327 jvmtiError
GetLocalDouble (jthread thread
, jint depth
, jint slot
,
1329 { return p
->GetLocalDouble (this, thread
, depth
, slot
, value_ptr
); }
1331 jvmtiError
SetLocalObject (jthread thread
, jint depth
, jint slot
,
1333 { return p
->SetLocalObject (this, thread
, depth
, slot
, value
); }
1335 jvmtiError
SetLocalInt (jthread thread
, jint depth
, jint slot
,
1337 { return p
->SetLocalInt (this, thread
, depth
, slot
, value
); }
1339 jvmtiError
SetLocalLong (jthread thread
, jint depth
, jint slot
,
1341 { return p
->SetLocalLong (this, thread
, depth
, slot
, value
); }
1343 jvmtiError
SetLocalFloat (jthread thread
, jint depth
, jint slot
,
1345 { return p
->SetLocalFloat (this, thread
, depth
, slot
, value
); }
1347 jvmtiError
SetLocalDouble (jthread thread
, jint depth
, jint slot
,
1349 { return p
->SetLocalDouble (this, thread
, depth
, slot
, value
); }
1351 jvmtiError
CreateRawMonitor (const char *name
, jrawMonitorID
*monitor_ptr
)
1352 { return p
->CreateRawMonitor (this, name
, monitor_ptr
); }
1354 jvmtiError
DestroyRawMonitor (jrawMonitorID monitor
)
1355 { return p
->DestroyRawMonitor (this, monitor
); }
1357 jvmtiError
RawMonitorEnter (jrawMonitorID monitor
)
1358 { return p
->RawMonitorEnter (this, monitor
); }
1360 jvmtiError
RawMonitorExit (jrawMonitorID monitor
)
1361 { return p
->RawMonitorExit (this, monitor
); }
1363 jvmtiError
RawMonitorWait (jrawMonitorID monitor
)
1364 { return p
->RawMonitorWait (this, monitor
); }
1366 jvmtiError
RawMonitorNotify (jrawMonitorID monitor
)
1367 { return p
->RawMonitorNotify (this, monitor
); }
1369 jvmtiError
RawMonitorNotifyAll (jrawMonitorID monitor
)
1370 { return p
->RawMonitorNotifyAll (this, monitor
); }
1372 jvmtiError
SetBreakpoint (jmethodID method
, jlocation location
)
1373 { return p
->SetBreakpoint (this, method
, location
); }
1375 jvmtiError
ClearBreakpoint (jmethodID method
, jlocation location
)
1376 { return p
->ClearBreakpoint (this, method
, location
); }
1378 jvmtiError
SetFieldAccessWatch (jclass klass
, jfieldID field
)
1379 { return p
->SetFieldAccessWatch (this, klass
, field
); }
1381 jvmtiError
ClearFieldAccessWatch (jclass klass
, jfieldID field
)
1382 { return p
->ClearFieldAccessWatch (this, klass
, field
); }
1384 jvmtiError
SetFieldModificationWatch (jclass klass
, jfieldID field
)
1385 { return p
->SetFieldModificationWatch (this, klass
, field
); }
1387 jvmtiError
ClearFieldModificationWatch (jclass klass
, jfieldID field
)
1388 { return p
->ClearFieldModificationWatch (this, klass
, field
); }
1390 jvmtiError
Allocate (jlong size
, unsigned char **mem_ptr
)
1391 { return p
->Allocate (this, size
, mem_ptr
); }
1393 jvmtiError
Deallocate (unsigned char *mem
)
1394 { return p
->Deallocate (this, mem
); }
1396 jvmtiError
GetClassSignature (jclass klass
, char **signature_ptr
,
1398 { return p
->GetClassSignature (this, klass
, signature_ptr
, generic_ptr
); }
1400 jvmtiError
GetClassStatus (jclass klass
, jint
*status_ptr
)
1401 { return p
->GetClassStatus (this, klass
, status_ptr
); }
1403 jvmtiError
GetSourceFileName (jclass klass
, char *source_name_ptr
)
1404 { return p
->GetSourceFileName (this, klass
, source_name_ptr
); }
1406 jvmtiError
GetClassModifiers (jclass klass
, jint
*modifiers_ptr
)
1407 { return p
->GetClassModifiers (this, klass
, modifiers_ptr
); }
1409 jvmtiError
GetClassMethods (jclass klass
, jint
*method_count_ptr
,
1410 jmethodID
**methods_ptr
)
1411 { return p
->GetClassMethods (this, klass
, method_count_ptr
, methods_ptr
); }
1413 jvmtiError
GetClassFields (jclass klass
, jint
*field_count_ptr
,
1414 jfieldID
**fields_ptr
)
1415 { return p
->GetClassFields (this, klass
, field_count_ptr
, fields_ptr
); }
1417 jvmtiError
GetImplementedInterfaces (jclass klass
,
1418 jint
*interface_count_ptr
,
1419 jclass
**interfaces_ptr
)
1421 return p
->GetImplementedInterfaces (this, klass
, interface_count_ptr
,
1425 jvmtiError
IsInterface (jclass klass
, jboolean
*is_interface_ptr
)
1426 { return p
->IsInterface (this, klass
, is_interface_ptr
); }
1428 jvmtiError
IsArrayClass (jclass klass
, jboolean
*is_array_class_ptr
)
1429 { return p
->IsArrayClass (this, klass
, is_array_class_ptr
); }
1431 jvmtiError
GetClassLoader (jclass klass
, jobject
*classloader_ptr
)
1432 { return p
->GetClassLoader (this, klass
, classloader_ptr
); }
1434 jvmtiError
GetObjectHashCode (jobject object
, jint
*hash_code_ptr
)
1435 { return p
->GetObjectHashCode (this, object
, hash_code_ptr
); }
1437 jvmtiError
GetObjectMonitorUsage (jobject object
,
1438 jvmtiMonitorUsage
*info_ptr
)
1439 { return p
->GetObjectMonitorUsage (this, object
, info_ptr
); }
1441 jvmtiError
GetFieldName (jclass klass
, jfieldID field
, char **name_ptr
,
1442 char **signature_ptr
, char **generic_ptr
)
1444 return p
->GetFieldName (this, klass
, field
, name_ptr
,
1445 signature_ptr
, generic_ptr
);
1448 jvmtiError
GetFieldDeclaringClass (jclass klass
, jfieldID field
,
1449 jclass
*declaring_class_ptr
)
1451 return p
->GetFieldDeclaringClass (this, klass
, field
,
1452 declaring_class_ptr
);
1455 jvmtiError
GetFieldModifiers (jclass klass
, jfieldID field
,
1456 jint
*modifiers_ptr
)
1457 { return p
->GetFieldModifiers (this, klass
, field
, modifiers_ptr
); }
1459 jvmtiError
IsFieldSynthetic (jclass klass
, jfieldID field
,
1460 jboolean
*is_synthetic_ptr
)
1461 { return p
->IsFieldSynthetic (this, klass
, field
, is_synthetic_ptr
); }
1463 jvmtiError
GetMethodName (jmethodID method
, char **name_ptr
,
1464 char **signature_ptr
, char **generic_ptr
)
1466 return p
->GetMethodName (this, method
, name_ptr
, signature_ptr
,
1470 jvmtiError
GetMethodDeclaringClass (jmethodID method
,
1471 jclass
*declaring_class_ptr
)
1472 { return p
->GetMethodDeclaringClass (this, method
, declaring_class_ptr
); }
1475 jvmtiError
GetMethodModifiers (jmethodID method
, jint
*modifiers_ptr
)
1476 { return p
->GetMethodModifiers (this, method
, modifiers_ptr
); }
1478 jvmtiError
GetMaxLocals (jmethodID method
, jint
*max_ptr
)
1479 { return p
->GetMaxLocals (this, method
, max_ptr
); }
1481 jvmtiError
GetArgumentsSize (jmethodID method
, jint
*size_ptr
)
1482 { return p
->GetArgumentsSize (this, method
, size_ptr
); }
1484 jvmtiError
GetLineNumberTable (jmethodID method
, jint
*entry_count_ptr
,
1485 jvmtiLineNumberEntry
**table_ptr
)
1486 { return p
->GetLineNumberTable (this, method
, entry_count_ptr
, table_ptr
); }
1488 jvmtiError
GetMethodLocation (jmethodID method
,
1489 jlocation
*start_location_ptr
,
1490 jlocation
*end_location_ptr
)
1492 return p
->GetMethodLocation (this, method
, start_location_ptr
,
1496 jvmtiError
GetLocalVariableTable (jmethodID method
, jint
*entry_count_ptr
,
1497 jvmtiLocalVariableEntry
**table_ptr
)
1499 return p
->GetLocalVariableTable (this, method
, entry_count_ptr
,
1503 jvmtiError
GetBytecodes (jmethodID method
, jint
*bytecode_count_ptr
,
1504 unsigned char **bytecodes_ptr
)
1506 return p
->GetBytecodes (this, method
, bytecode_count_ptr
,
1510 jvmtiError
IsMethodNative (jmethodID method
, jboolean
*is_native_ptr
)
1511 { return p
->IsMethodNative (this, method
, is_native_ptr
); }
1513 jvmtiError
IsMethodSynthetic (jmethodID method
, jboolean
*is_synthetic_ptr
)
1514 { return p
->IsMethodSynthetic (this, method
, is_synthetic_ptr
); }
1516 jvmtiError
GetLoadedClasses (jint
*class_count_ptr
, jclass
**classes_ptr
)
1517 { return p
->GetLoadedClasses (this, class_count_ptr
, classes_ptr
); }
1519 jvmtiError
GetClassLoaderClasses (jobject initiating_loader
,
1520 jint
*class_count_ptr
,
1521 jclass
**classes_ptr
)
1523 return p
->GetClassLoaderClasses (this, initiating_loader
,
1524 class_count_ptr
, classes_ptr
);
1527 jvmtiError
PopFrame (jthread thread
)
1528 { return p
->PopFrame (this, thread
); }
1530 jvmtiError
RedefineClasses (jint class_count
,
1531 const jvmtiClassDefinition
* class_definitions
)
1532 { return p
->RedefineClasses (this, class_count
, class_definitions
); }
1534 jvmtiError
GetVersionNumber (jint
*version_ptr
)
1535 { return p
->GetVersionNumber (this, version_ptr
); }
1537 jvmtiError
GetCapabilities (jvmtiCapabilities
*capabilities_ptr
)
1538 { return p
->GetCapabilities (this, capabilities_ptr
); }
1540 jvmtiError
GetSourceDebugExtension (jclass klass
,
1541 char **source_debug_extension_ptr
)
1543 return p
->GetSourceDebugExtension (this, klass
,
1544 source_debug_extension_ptr
);
1547 jvmtiError
IsMethodObsolete (jmethodID method
, jboolean
*is_obsolete_ptr
)
1548 { return p
->IsMethodObsolete (this, method
, is_obsolete_ptr
); }
1551 jvmtiError
SuspendThreadList (jint request_count
,
1552 const jthread
*request_list
,
1553 jvmtiError
*results
)
1554 { return p
->SuspendThreadList (this, request_count
, request_list
, results
); }
1556 jvmtiError
ResumeThreadList (jint request_count
,
1557 const jthread
*request_list
,
1558 jvmtiError
*results
)
1559 { return p
->ResumeThreadList (this, request_count
, request_list
, results
); }
1561 jvmtiError
GetAllStackTraces (jint max_frame_count
,
1562 jvmtiStackInfo
**stack_info_ptr
,
1563 jint
*thread_count_ptr
)
1565 return p
->GetAllStackTraces (this, max_frame_count
, stack_info_ptr
,
1569 jvmtiError
GetThreadListStackTraces (jint thread_count
,
1570 const jthread
*thread_list
,
1571 jint max_frame_count
,
1572 jvmtiStackInfo
**stack_info_ptr
)
1574 return p
->GetThreadListStackTraces (this, thread_count
, thread_list
,
1575 max_frame_count
, stack_info_ptr
);
1578 jvmtiError
GetThreadLocalStorage (jthread thread
, void **data_ptr
)
1579 { return p
->GetThreadLocalStorage (this, thread
, data_ptr
); }
1581 jvmtiError
SetThreadLocalStorage (jthread thread
, const void *data
)
1582 { return p
->SetThreadLocalStorage (this, thread
, data
); }
1584 jvmtiError
GetStackTrace (jthread thread
, jint start_depth
,
1585 jint max_frame_count
,
1586 jvmtiFrameInfo
*frame_buffer
, jint
*count_ptr
)
1588 return p
->GetStackTrace (this, thread
, start_depth
, max_frame_count
,
1589 frame_buffer
, count_ptr
);
1592 jvmtiError
GetTag (jobject object
, jlong
*tag_ptr
)
1593 { return p
->GetTag (this, object
, tag_ptr
); }
1595 jvmtiError
SetTag (jobject object
, jlong tag
)
1596 { return p
->SetTag (this, object
, tag
); }
1598 jvmtiError
ForceGarbageCollection (void)
1599 { return p
->ForceGarbageCollection (this); }
1601 jvmtiError
IterateOverObjectsReachableFromObject (jobject object
,
1602 jvmtiObjectReferenceCallback object_reference_callback
,
1605 return p
->IterateOverObjectsReachableFromObject (this, object
,
1606 object_reference_callback
,
1610 jvmtiError
IterateOverReachableObjects (jvmtiHeapRootCallback heap_root_callback
,
1611 jvmtiStackReferenceCallback stack_ref_callback
,
1612 jvmtiObjectReferenceCallback object_ref_callback
,
1615 return p
->IterateOverReachableObjects (this, heap_root_callback
,
1617 object_ref_callback
,
1621 jvmtiError
IterateOverHeap (jvmtiHeapObjectFilter object_filter
,
1622 jvmtiHeapObjectCallback heap_object_callback
,
1625 return p
->IterateOverHeap (this, object_filter
, heap_object_callback
,
1629 jvmtiError
IterateOverInstanceOfClass (jclass klass
,
1630 jvmtiHeapObjectFilter object_filter
,
1631 jvmtiHeapObjectCallback heap_object_callback
,
1634 return p
->IterateOverInstanceOfClass (this, klass
, object_filter
,
1635 heap_object_callback
, user_data
);
1638 jvmtiError
GetObjectsWithTags (jint tag_count
, const jlong
*tags
,
1639 jint
*count_ptr
, jobject
**object_result_ptr
,
1640 jlong
**tag_result_ptr
)
1642 return p
->GetObjectsWithTags (this, tag_count
, tags
, count_ptr
,
1643 object_result_ptr
, tag_result_ptr
);
1646 jvmtiError
SetJNIFunctionTable (const jniNativeInterface
*function_table
)
1647 { return p
->SetJNIFunctionTable (this, function_table
); }
1649 jvmtiError
GetJNIFunctionTable (jniNativeInterface
**function_table_ptr
)
1650 { return p
->GetJNIFunctionTable (this, function_table_ptr
); }
1652 jvmtiError
SetEventCallbacks (const jvmtiEventCallbacks
*callbacks
,
1653 jint size_of_callbacks
)
1654 { return p
->SetEventCallbacks (this, callbacks
, size_of_callbacks
); }
1656 jvmtiError
GenerateEvents (jvmtiEvent event_type
)
1657 { return p
->GenerateEvents (this, event_type
); }
1659 jvmtiError
GetExtensionFunctions (jint
*extension_count_ptr
,
1660 jvmtiExtensionFunctionInfo
**extensions
)
1661 { return p
->GetExtensionFunctions (this, extension_count_ptr
, extensions
); }
1663 jvmtiError
GetExtensionEvents (jint
*extension_count_ptr
,
1664 jvmtiExtensionEventInfo
**extensions
)
1665 { return p
->GetExtensionEvents (this, extension_count_ptr
, extensions
); }
1667 jvmtiError
SetExtensionEventCallback (jint extension_event_index
,
1668 jvmtiExtensionEvent callback
)
1670 return p
->SetExtensionEventCallback (this, extension_event_index
,
1674 jvmtiError
DisposeEnvironment (void)
1675 { return p
->DisposeEnvironment (this); }
1677 jvmtiError
GetErrorName (jvmtiError error
, char **name_ptr
)
1678 { return p
->GetErrorName (this, error
, name_ptr
); }
1680 jvmtiError
GetJLocationFormat (jvmtiJlocationFormat
*format_ptr
)
1681 { return p
->GetJLocationFormat (this, format_ptr
); }
1683 jvmtiError
GetSystemProperties (jint
*count_ptr
, char ***property_ptr
)
1684 { return p
->GetSystemProperties (this, count_ptr
, property_ptr
); }
1686 jvmtiError
GetSystemProperty (const char *property
, char **value_ptr
)
1687 { return p
->GetSystemProperty (this, property
, value_ptr
); }
1689 jvmtiError
SetSystemProperty (const char *property
, const char *value
)
1690 { return p
->SetSystemProperty (this, property
, value
); }
1692 jvmtiError
GetPhase (jvmtiPhase
*phase_ptr
)
1693 { return p
->GetPhase (this, phase_ptr
); }
1695 jvmtiError
GetCurrentThreadCpuTimerInfo (jvmtiTimerInfo
*info_ptr
)
1696 { return p
->GetCurrentThreadCpuTimerInfo (this, info_ptr
); }
1698 jvmtiError
GetCurrentThreadCpuTime (jlong
*nanos_ptr
)
1699 { return p
->GetCurrentThreadCpuTime (this, nanos_ptr
); }
1701 jvmtiError
GetThreadCpuTimerInfo (jvmtiTimerInfo
*info_ptr
)
1702 { return p
->GetThreadCpuTimerInfo (this, info_ptr
); }
1704 jvmtiError
GetThreadCpuTime (jthread thread
, jlong
*nanos_ptr
)
1705 { return p
->GetThreadCpuTime (this, thread
, nanos_ptr
); }
1707 jvmtiError
GetTimerInfo (jvmtiTimerInfo
*info_ptr
)
1708 { return p
->GetTimerInfo (this, info_ptr
); }
1710 jvmtiError
GetTime (jlong
*nanos_ptr
)
1711 {return p
->GetTime (this, nanos_ptr
); }
1713 jvmtiError
GetPotentialCapabilities (jvmtiCapabilities
*capabilities_ptr
)
1714 { return p
->GetPotentialCapabilities (this, capabilities_ptr
); }
1716 jvmtiError
AddCapabilities (const jvmtiCapabilities
*capabilities_ptr
)
1717 { return p
->AddCapabilities (this, capabilities_ptr
); }
1719 jvmtiError
RelinquishCapabilities (const jvmtiCapabilities
*capabilities_ptr
)
1720 { return p
->RelinquishCapabilities (this, capabilities_ptr
); }
1722 jvmtiError
GetAvailableProcessors (jint
*processor_count_ptr
)
1723 { return p
->GetAvailableProcessors (this, processor_count_ptr
); }
1725 jvmtiError
GetEnvironmentLocalStorage (void **data_ptr
)
1726 { return p
->GetEnvironmentLocalStorage (this, data_ptr
); }
1728 jvmtiError
SetEnvironmentLocalStorage (const void *data
)
1729 { return p
->SetEnvironmentLocalStorage (this, data
); }
1731 jvmtiError
AddToBootstrapClassLoaderSearch (const char *segment
)
1732 { return p
->AddToBootstrapClassLoaderSearch (this, segment
); }
1734 jvmtiError
SetVerboseFlag (jvmtiVerboseFlag flag
, jboolean value
)
1735 { return p
->SetVerboseFlag (this, flag
, value
); }
1737 jvmtiError
GetObjectSize (jobject object
, jlong
*size_ptr
)
1738 { return p
->GetObjectSize (this, object
, size_ptr
); }
1740 #endif /* __cplusplus */
1743 * Miscellaneous flags, constants, etc
1746 /* Class status flags */
1747 #define JVMTI_CLASS_STATUS_VERIFIED 1
1748 #define JVMTI_CLASS_STATUS_PREPARED 2
1749 #define JVMTI_CLASS_STATUS_INITIALIZED 4
1750 #define JVMTI_CLASS_STATUS_ERROR 8
1751 #define JVMTI_CLASS_STATUS_ARRAY 16
1752 #define JVMTI_CLASS_STATUS_PRIMITIVE 32
1754 /* Thread state flags */
1755 #define JVMTI_THREAD_STATE_ALIVE 0x0001
1756 #define JVMTI_THREAD_STATE_TERMINATED 0x0002
1757 #define JVMTI_THREAD_STATE_RUNNABLE 0x0004
1758 #define JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER 0x0400
1759 #define JVMTI_THREAD_STATE_WAITING 0x0080
1760 #define JVMTI_THREAD_STATE_WAITING_INDEFINITELY 0x0010
1761 #define JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT 0x0020
1762 #define JVMTI_THREAD_STATE_SLEEPING 0x0040
1763 #define JVMTI_THREAD_STATE_IN_OBJECT_WAIT 0x0100
1764 #define JVMTI_THREAD_STATE_PARKED 0x0200
1765 #define JVMTI_THREAD_STATE_SUSPENDED 0x100000
1766 #define JVMTI_THREAD_STATE_INTERRUPTED 0x200000
1767 #define JVMTI_THREAD_STATE_IN_NATIVE 0x400000
1768 #define JVMTI_THREAD_STATE_VENDOR_1 0x10000000
1769 #define JVMTI_THREAD_STATE_VENDOR_2 0x20000000
1770 #define JVMTI_THREAD_STATE_VENDOR_3 0x40000000
1772 /* java.lang.Thread.State conversion masks */
1773 #define JVMTI_JAVA_LANG_THREAD_STATE_MASK \
1774 (JVMTI_THREAD_STATE_TERMINATED \
1775 | JVMTI_THREAD_STATE_ALIVE \
1776 | JVMTI_THREAD_STATE_RUNNABLE \
1777 | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER \
1778 | JVMTI_THREAD_STATE_WAITING \
1779 | JVMTI_THREAD_STATE_WAITING_INDEFINITELY \
1780 | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT)
1781 #define JVMTI_JAVA_LANG_THREAD_STATE_NEW 0
1782 #define JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED JVMTI_THREAD_STATE_TERMINATED
1783 #define JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE \
1784 (JVMTI_THREAD_STATE_ALIVE \
1785 | JVMTI_THREAD_STATE_RUNNABLE)
1786 #define JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED \
1787 (JVMTI_THREAD_STATE_ALIVE \
1788 | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER)
1789 #define JVMTI_JAVA_LANG_THREAD_STATE_WAITING \
1790 (JVMTI_THREAD_STATE_ALIVE \
1791 | JVMTI_THREAD_STATE_WAITING \
1792 | JVMTI_THREAD_STATE_WAITING_INDEFINITELY)
1793 #define JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING \
1794 (JVMTI_THREAD_STATE_ALIVE \
1795 | JVMTI_THREAD_STATE_WAITING \
1796 | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT)
1798 /* Thread priorities */
1799 #define JVMTI_THREAD_MIN_PRIORITY 1
1800 #define JVMTI_THREAD_NORM_PRIORITY 5
1801 #define JVMTI_THREAD_MAX_PRIORITY 10
1803 /* Keep c-font-lock-extra-types in order: JNI followed by JVMTI,
1804 all in alphabetical order */
1805 /* Local Variables: */
1806 /* c-font-lock-extra-types: ("\\sw+_t"
1807 "JNIEnv" "JNINativeMethod" "JavaVM" "JavaVMOption" "jarray"
1808 "jboolean" "jbooleanArray" "jbyte" "jbyteArray" "jchar" "jcharArray"
1809 "jclass" "jdouble" "jdoubleArray" "jfieldID" "jfloat" "jfloatArray"
1810 "jint" "jintArray" "jlong" "jlongArray" "jmethodID" "jobject" "jstring" "jthrowable"
1812 "jvmtiEnv" "jvmtiError"
1813 "jthread" "jthreadGroup" "jlocation" "jrawMonitorID") */
1815 #endif /* !_CLASSPATH_JVMTI_H */