1 /* jvmti.h - Java Virtual Machine Tool Interface 2 Copyright (C) 2006 Free Software Foundation 3 4 This file is part of GNU Classpath. 5 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) 9 any later version. 10 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. 15 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 19 02110-1301 USA. 20 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 24 combination. 25 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. */ 37 38 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 42 __cplusplus. */ 43 44 #ifndef _CLASSPATH_JVMTI_H 45 #define _CLASSPATH_JVMTI_H 46 #include <jni.h> 47 48 #include "jvmti_md.h" 49 50 /* The VM might define JVMTI base types */ 51 #ifndef _CLASSPATH_VM_JVMTI_TYPES_DEFINED 52 53 typedef jobject jthread; 54 typedef jobject jthreadGroup; 55 typedef jlong jlocation; 56 typedef struct _Jv_rawMonitorID *jrawMonitorID; 57 58 #endif /* !_CLASSPATH_VM_JVMTI_TYPES_DEFINED */ 59 60 /* JVMTI Version */ 61 #define JVMTI_VERSION_1_0 0x30010000 62 #define JVMTI_VERSION (JVMTI_VERSION_1_0 + 38) /* Spec version is 1.0.38 */ 63 64 #ifdef __cplusplus 65 extern "C" 66 { 67 #endif 68 69 /* These functions might be defined in libraries which we load; the 70 JVMTI implementation calls them at the appropriate times. */ 71 extern JNIEXPORT jint JNICALL Agent_OnLoad (JavaVM *vm, char *options, 72 void *reserved); 73 extern JNIEXPORT void JNICALL Agent_OnUnload (JavaVM *vm); 74 75 #ifdef __cplusplus 76 } 77 #endif 78 79 /* Forward declarations */ 80 typedef struct _jvmtiAddrLocationMap jvmtiAddrLocationMap; 81 #ifdef __cplusplus 82 typedef struct _Jv_JVMTIEnv jvmtiEnv; 83 #else 84 typedef const struct _Jv_jvmtiEnv *jvmtiEnv; 85 #endif 86 87 /* 88 * Error constants 89 */ 90 91 typedef enum 92 { 93 /* Universal Errors */ 94 JVMTI_ERROR_NONE = 0, 95 JVMTI_ERROR_NULL_POINTER = 100, 96 JVMTI_ERROR_OUT_OF_MEMORY = 110, 97 JVMTI_ERROR_ACCESS_DENIED = 111, 98 JVMTI_ERROR_WRONG_PHASE = 112, 99 JVMTI_ERROR_INTERNAL = 113, 100 JVMTI_ERROR_UNATTACHED_THREAD = 115, 101 JVMTI_ERROR_INVALID_ENVIRONMENT = 116, 102 103 /* Function-specific Required Errors */ 104 JVMTI_ERROR_INVALID_PRIORITY = 12, 105 JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13, 106 JVMTI_ERROR_THREAD_SUSPENDED = 14, 107 JVMTI_ERROR_THREAD_NOT_ALIVE = 15, 108 JVMTI_ERROR_CLASS_NOT_PREPARED = 22, 109 JVMTI_ERROR_NO_MORE_FRAMES = 31, 110 JVMTI_ERROR_OPAQUE_FRAME = 32, 111 JVMTI_ERROR_DUPLICATE = 40, 112 JVMTI_ERROR_NOT_FOUND = 41, 113 JVMTI_ERROR_NOT_MONITOR_OWNER = 51, 114 JVMTI_ERROR_INTERRUPT = 52, 115 JVMTI_ERROR_UNMODIFIABLE_CLASS = 79, 116 JVMTI_ERROR_NOT_AVAILABLE = 98, 117 JVMTI_ERROR_ABSENT_INFORMATION = 101, 118 JVMTI_ERROR_INVALID_EVENT_TYPE = 102, 119 JVMTI_ERROR_NATIVE_METHOD = 104, 120 121 /* Function-specific Agent Errors */ 122 JVMTI_ERROR_INVALID_THREAD = 10, 123 JVMTI_ERROR_INVALID_THREAD_GROUP = 11, 124 JVMTI_ERROR_INVALID_OBJECT = 20, 125 JVMTI_ERROR_INVALID_CLASS = 21, 126 JVMTI_ERROR_INVALID_METHODID = 23, 127 JVMTI_ERROR_INVALID_LOCATION = 24, 128 JVMTI_ERROR_INVALID_FIELDID = 25, 129 JVMTI_ERROR_TYPE_MISMATCH = 34, 130 JVMTI_ERROR_INVALID_SLOT = 35, 131 JVMTI_ERROR_INVALID_MONITOR = 50, 132 JVMTI_ERROR_INVALID_CLASS_FORMAT = 60, 133 JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61, 134 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63, 135 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64, 136 JVMTI_ERROR_INVALID_TYPESTATE = 65, 137 JVMTI_ERROR_FAILS_VERIFICATION = 62, 138 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66, 139 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67, 140 JVMTI_ERROR_UNSUPPORTED_VERSION = 68, 141 JVMTI_ERROR_NAMES_DONT_MATCH = 69, 142 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70, 143 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71, 144 JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99, 145 JVMTI_ERROR_ILLEGAL_ARGUMENT = 103 146 } jvmtiError; 147 148 /* 149 * Enumeration Definitions 150 */ 151 152 typedef enum 153 { 154 JVMTI_DISABLE = 0, 155 JVMTI_ENABLE = 1 156 } jvmtiEventMode; 157 158 typedef enum 159 { 160 JVMTI_HEAP_OBJECT_TAGGED = 1, 161 JVMTI_HEAP_OBJECT_UNTAGGED = 2, 162 JVMTI_HEAP_OBJECT_EITHER = 3 163 } jvmtiHeapObjectFilter; 164 165 typedef enum 166 { 167 JVMTI_HEAP_ROOT_JNI_GLOBAL = 1, 168 JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2, 169 JVMTI_HEAP_ROOT_MONITOR = 3, 170 JVMTI_HEAP_ROOT_STACK_LOCAL = 4, 171 JVMTI_HEAP_ROOT_JNI_LOCAL = 5, 172 JVMTI_HEAP_ROOT_THREAD = 6, 173 JVMTI_HEAP_ROOT_OTHER = 7 174 } jvmtiHeapRootKind; 175 176 typedef enum 177 { 178 JVMTI_ITERATION_ABORT = 0, 179 JVMTI_ITERATION_CONTINUE = 1, 180 JVMTI_ITERATION_IGNORE = 2 181 } jvmtiIterationControl; 182 183 typedef enum 184 { 185 JVMTI_JLOCATION_OTHER = 0, 186 JVMTI_JLOCATION_JVMBCI = 1, 187 JVMTI_JLOCATION_MACHINEPC = 2 188 } jvmtiJlocationFormat; 189 190 typedef enum 191 { 192 JVMTI_REFERENCE_CLASS = 1, 193 JVMTI_REFERENCE_FIELD = 2, 194 JVMTI_REFERENCE_ARRAY_ELEMENT = 3, 195 JVMTI_REFERENCE_CLASS_LOADER = 4, 196 JVMTI_REFERENCE_SIGNERS = 5, 197 JVMTI_REFERENCE_PROTECTION_DOMAIN = 6, 198 JVMTI_REFERENCE_INTERFACE = 7, 199 JVMTI_REFERENCE_STATIC_FIELD = 8, 200 JVMTI_REFERENCE_CONSTANT_POOL = 9 201 } jvmtiObjectReferenceKind; 202 203 typedef enum 204 { 205 JVMTI_KIND_IN = 91, 206 JVMTI_KIND_IN_PTR = 92, 207 JVMTI_KIND_IN_BUF = 93, 208 JVMTI_KIND_ALLOC_BUF = 94, 209 JVMTI_KIND_ALLOC_ALLOC_BUF = 95, 210 JVMTI_KIND_OUT = 96, 211 JVMTI_KIND_OUT_BUF = 97 212 } jvmtiParamKind; 213 214 typedef enum 215 { 216 JVMTI_TYPE_JBYTE = 101, 217 JVMTI_TYPE_JCHAR = 102, 218 JVMTI_TYPE_JSHORT = 103, 219 JVMTI_TYPE_JINT = 104, 220 JVMTI_TYPE_JLONG = 105, 221 JVMTI_TYPE_JFLOAT = 106, 222 JVMTI_TYPE_JDOUBLE = 107, 223 JVMTI_TYPE_JBOOLEAN = 108, 224 JVMTI_TYPE_JOBJECT = 109, 225 JVMTI_TYPE_JTHREAD = 110, 226 JVMTI_TYPE_JCLASS = 111, 227 JVMTI_TYPE_JVALUE = 112, 228 JVMTI_TYPE_JFIELDID = 113, 229 JVMTI_TYPE_JMETHODID = 114, 230 JVMTI_TYPE_CCHAR = 115, 231 JVMTI_TYPE_CVOID = 116, 232 JVMTI_TYPE_JNIENV = 117 233 } jvmtiParamTypes; 234 235 typedef enum 236 { 237 JVMTI_PHASE_ONLOAD = 1, 238 JVMTI_PHASE_PRIMORDIAL = 2, 239 JVMTI_PHASE_LIVE = 4, 240 JVMTI_PHASE_START = 6, 241 JVMTI_PHASE_DEAD = 8 242 } jvmtiPhase; 243 244 typedef enum 245 { 246 JVMTI_TIMER_USER_CPU = 30, 247 JVMTI_TIMER_TOTAL_CPU = 31, 248 JVMTI_TIMER_ELAPSED = 32 249 } jvmtiTimerKind; 250 251 typedef enum 252 { 253 JVMTI_VERBOSE_OTHER = 0, 254 JVMTI_VERBOSE_GC = 1, 255 JVMTI_VERBOSE_CLASS = 2, 256 JVMTI_VERBOSE_JNI = 4 257 } jvmtiVerboseFlag; 258 259 /* Version information */ 260 #define JVMTI_VERSION_INTERFACE_JNI 0x00000000 261 #define JVMTI_VERSION_INTERFACE_JVMTI 0x30000000 262 #define JVMTI_VERSION_MASK_INTERFACE_TYPE 0x70000000 263 #define JVMTI_VERSION_MASK_MAJOR 0x0FFF0000 264 #define JVMTI_VERSION_MASK_MINOR 0x0000FF00 265 #define JVMTI_VERSION_MASK_MICRO 0x000000FF 266 #define JVMTI_VERSION_SHIFT_MAJOR 16 267 #define JVMTI_VERSION_SHIFT_MINOR 8 268 #define JVMTI_VERSION_SHIFT_MICRO 0 269 270 /* 271 * Events and event callbacks 272 */ 273 274 typedef enum 275 { 276 JVMTI_EVENT_VM_INIT = 50, 277 JVMTI_EVENT_VM_DEATH = 51, 278 JVMTI_EVENT_THREAD_START = 52, 279 JVMTI_EVENT_THREAD_END = 53, 280 JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54, 281 JVMTI_EVENT_CLASS_LOAD = 55, 282 JVMTI_EVENT_CLASS_PREPARE = 56, 283 JVMTI_EVENT_VM_START = 57, 284 JVMTI_EVENT_EXCEPTION = 58, 285 JVMTI_EVENT_EXCEPTION_CATCH = 59, 286 JVMTI_EVENT_SINGLE_STEP = 60, 287 JVMTI_EVENT_FRAME_POP = 61, 288 JVMTI_EVENT_BREAKPOINT = 62, 289 JVMTI_EVENT_FIELD_ACCESS = 63, 290 JVMTI_EVENT_FIELD_MODIFICATION = 64, 291 JVMTI_EVENT_METHOD_ENTRY = 65, 292 JVMTI_EVENT_METHOD_EXIT = 66, 293 JVMTI_EVENT_NATIVE_METHOD_BIND = 67, 294 JVMTI_EVENT_COMPILED_METHOD_LOAD = 68, 295 JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69, 296 JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70, 297 JVMTI_EVENT_DATA_DUMP_REQUEST = 71, 298 JVMTI_EVENT_MONITOR_WAIT = 73, 299 JVMTI_EVENT_MONITOR_WAITED = 74, 300 JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75, 301 JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76, 302 JVMTI_EVENT_GARBAGE_COLLECTION_START = 81, 303 JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82, 304 JVMTI_EVENT_OBJECT_FREE = 83, 305 JVMTI_EVENT_VM_OBJECT_ALLOC = 84 306 } jvmtiEvent; 307 308 typedef void *jvmtiEventReserved; 309 310 typedef void (JNICALL *jvmtiEventSingleStep) 311 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, 312 jlocation location); 313 314 typedef void (JNICALL *jvmtiEventBreakpoint) 315 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, 316 jlocation location); 317 318 typedef void (JNICALL *jvmtiEventFieldAccess) 319 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, 320 jlocation location, jclass field_klass, jobject object, jfieldID field); 321 322 typedef void (JNICALL *jvmtiEventFieldModification) 323 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, 324 jlocation location, jclass field_klass, jobject object, jfieldID field, 325 char signature_type, jvalue new_value); 326 327 typedef void (JNICALL *jvmtiEventFramePop) 328 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, 329 jboolean was_popped_by_exception); 330 331 typedef void (JNICALL *jvmtiEventMethodEntry) 332 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method); 333 334 typedef void (JNICALL *jvmtiEventMethodExit) 335 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, 336 jboolean was_popped_by_exception, jvalue return_value); 337 338 typedef void (JNICALL *jvmtiEventNativeMethodBind) 339 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, 340 void *address, void **new_address_ptr); 341 342 typedef void (JNICALL *jvmtiEventException) 343 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, 344 jlocation location, jobject exception, jmethodID catch_method, 345 jlocation catch_location); 346 347 typedef void (JNICALL *jvmtiEventExceptionCatch) 348 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jmethodID method, 349 jlocation location, jobject exception); 350 351 typedef void (JNICALL *jvmtiEventThreadStart) 352 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread); 353 354 typedef void (JNICALL *jvmtiEventThreadEnd) 355 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread); 356 357 typedef void (JNICALL *jvmtiEventClassLoad) 358 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jclass klass); 359 360 typedef void (JNICALL *jvmtiEventClassPrepare) 361 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thraed, jclass klass); 362 363 typedef void (JNICALL *jvmtiEventClassFileLoadHook) 364 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jclass class_being_redefined, 365 jobject loader, const char *name, jobject protection_domain, 366 jint class_data_len, const unsigned char *class_data, 367 jint *new_class_data_len, unsigned char **new_class_data); 368 369 typedef void (JNICALL *jvmtiEventVMStart) 370 (jvmtiEnv *jvmti_env, JNIEnv *jni_env); 371 372 typedef void (JNICALL *jvmtiEventVMInit) 373 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread); 374 375 typedef void (JNICALL *jvmtiEventVMDeath) 376 (jvmtiEnv *jvmti_env, JNIEnv *jni_env); 377 378 typedef void (JNICALL *jvmtiEventCompiledMethodLoad) 379 (jvmtiEnv *jvmti_env, jmethodID method, jint code_size, 380 const void *code_addr, jint map_length, const jvmtiAddrLocationMap *map, 381 const void *compile_info); 382 383 typedef void (JNICALL *jvmtiEventCompiledMethodUnload) 384 (jvmtiEnv *jvmti_env, jmethodID method, const void *code_addr); 385 386 typedef void (JNICALL *jvmtiEventDynamicCodeGenerated) 387 (jvmtiEnv *jvmti_env, const char *name, const void *address, jint length); 388 389 typedef void (JNICALL *jvmtiEventDataDumpRequest) 390 (jvmtiEnv *jvmti_env); 391 392 typedef void (JNICALL *jvmtiEventMonitorContendedEnter) 393 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object); 394 395 typedef void (JNICALL *jvmtiEventMonitorContendedEntered) 396 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object); 397 398 typedef void (JNICALL *jvmtiEventMonitorWait) 399 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object, 400 jlong timeout); 401 402 typedef void (JNICALL *jvmtiEventMonitorWaited) 403 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object, 404 jboolean timed_out); 405 406 typedef void (JNICALL *jvmtiEventVMObjectAlloc) 407 (jvmtiEnv *jvmti_env, JNIEnv *jni_env, jthread thread, jobject object, 408 jclass object_klass, jlong size); 409 410 typedef void (JNICALL *jvmtiEventObjectFree) 411 (jvmtiEnv *jvmti_env, jlong tag); 412 413 typedef void (JNICALL *jvmtiEventGarbageCollectionStart) 414 (jvmtiEnv *jvmti_env); 415 416 typedef void (JNICALL *jvmtiEventGarbageCollectionFinish) 417 (jvmtiEnv *jvmti_env); 418 419 typedef struct 420 { 421 jvmtiEventVMInit VMInit; 422 jvmtiEventVMDeath VMDeath; 423 jvmtiEventThreadStart ThreadStart; 424 jvmtiEventThreadEnd ThreadEnd; 425 jvmtiEventClassFileLoadHook ClassFileLoadHook; 426 jvmtiEventClassLoad ClassLoad; 427 jvmtiEventClassPrepare ClassPrepare; 428 jvmtiEventVMStart VMStart; 429 jvmtiEventException Exception; 430 jvmtiEventExceptionCatch ExceptionCatch; 431 jvmtiEventSingleStep SingleStep; 432 jvmtiEventFramePop FramePop; 433 jvmtiEventBreakpoint Breakpoint; 434 jvmtiEventFieldAccess FieldAccess; 435 jvmtiEventFieldModification FieldModification; 436 jvmtiEventMethodEntry MethodEntry; 437 jvmtiEventMethodExit MethodExit; 438 jvmtiEventNativeMethodBind NativeMethodBind; 439 jvmtiEventCompiledMethodLoad CompiledMethodLoad; 440 jvmtiEventCompiledMethodUnload CompiledMethodUnload; 441 jvmtiEventDynamicCodeGenerated DynamicCodeGenerated; 442 jvmtiEventDataDumpRequest DataDumpRequest; 443 jvmtiEventReserved reserved72; 444 jvmtiEventMonitorWait MonitorWait; 445 jvmtiEventMonitorWaited MonitorWaited; 446 jvmtiEventMonitorContendedEnter MonitorContendedEnter; 447 jvmtiEventMonitorContendedEntered MonitorContendedEntered; 448 jvmtiEventReserved reserved77; 449 jvmtiEventReserved reserved78; 450 jvmtiEventReserved reserved79; 451 jvmtiEventReserved reserved80; 452 jvmtiEventGarbageCollectionStart GarbageCollectionStart; 453 jvmtiEventGarbageCollectionFinish GarbageCollectionFinish; 454 jvmtiEventObjectFree ObjectFree; 455 jvmtiEventVMObjectAlloc VMObjectAlloc; 456 } jvmtiEventCallbacks; 457 458 /* 459 * Function and Structure Type Definitions 460 */ 461 462 struct _jvmtiAddrLocationMap 463 { 464 const void *start_address; 465 jlocation location; 466 }; 467 468 typedef struct 469 { 470 unsigned int can_tag_objects : 1; 471 unsigned int can_generate_field_modification_events : 1; 472 unsigned int can_generate_field_access_events : 1; 473 unsigned int can_get_bytecodes : 1; 474 unsigned int can_get_synthetic_attribute : 1; 475 unsigned int can_get_owned_monitor_info : 1; 476 unsigned int can_get_current_contended_monitor : 1; 477 unsigned int can_get_monitor_info : 1; 478 unsigned int can_pop_frame : 1; 479 unsigned int can_redefine_classes : 1; 480 unsigned int can_signal_thread : 1; 481 unsigned int can_get_source_file_name : 1; 482 unsigned int can_get_line_numbers : 1; 483 unsigned int can_get_source_debug_extension : 1; 484 unsigned int can_access_local_variables : 1; 485 unsigned int can_maintain_original_method_order : 1; 486 unsigned int can_generate_single_step_events : 1; 487 unsigned int can_generate_exception_events : 1; 488 unsigned int can_generate_frame_pop_events : 1; 489 unsigned int can_generate_breakpoint_events : 1; 490 unsigned int can_suspend : 1; 491 unsigned int can_redefine_any_class : 1; 492 unsigned int can_get_current_thread_cpu_time : 1; 493 unsigned int can_get_thread_cpu_time : 1; 494 unsigned int can_generate_method_entry_events : 1; 495 unsigned int can_generate_method_exit_events : 1; 496 unsigned int can_generate_all_class_hook_events : 1; 497 unsigned int can_generate_compiled_method_load_events : 1; 498 unsigned int can_generate_monitor_events : 1; 499 unsigned int can_generate_vm_object_alloc_events : 1; 500 unsigned int can_generate_native_method_bind_events : 1; 501 unsigned int can_generate_garbage_collection_events : 1; 502 unsigned int can_generate_object_free_events : 1; 503 unsigned int : 15; 504 unsigned int : 16; 505 unsigned int : 16; 506 unsigned int : 16; 507 unsigned int : 16; 508 unsigned int : 16; 509 } jvmtiCapabilities; 510 511 typedef struct 512 { 513 jclass klass; 514 jint class_byte_count; 515 const unsigned char *class_bytes; 516 } jvmtiClassDefinition; 517 518 typedef struct 519 { 520 char *name; 521 jvmtiParamKind kind; 522 jvmtiParamTypes base_type; 523 jboolean null_ok; 524 } jvmtiParamInfo; 525 526 typedef struct 527 { 528 jint extension_event_index; 529 char *id; 530 char *short_description; 531 jint param_count; 532 jvmtiParamInfo* params; 533 } jvmtiExtensionEventInfo; 534 535 typedef jvmtiError (JNICALL *jvmtiExtensionFunction) 536 (jvmtiEnv *jvmti_enf, ...); 537 538 typedef struct 539 { 540 jvmtiExtensionFunction func; 541 char *id; 542 char *short_description; 543 jint param_count; 544 jvmtiParamInfo *params; 545 jint error_count; 546 jvmtiError *errors; 547 } jvmtiExtensionFunctionInfo; 548 549 typedef struct 550 { 551 jmethodID method; 552 jlocation location; 553 } jvmtiFrameInfo; 554 555 typedef struct 556 { 557 jlocation start_location; 558 jint line_number; 559 } jvmtiLineNumberEntry; 560 561 typedef struct 562 { 563 jlocation start_location; 564 jint length; 565 char *name; 566 char *signature; 567 char *generic_signature; 568 jint slot; 569 } jvmtiLocalVariableEntry; 570 571 typedef struct 572 { 573 jthread owner; 574 jint entry_count; 575 jint waiter_count; 576 jthread *waiters; 577 jint notify_waiter_count; 578 jthread *notify_waiters; 579 } jvmtiMonitorUsage; 580 581 typedef struct 582 { 583 jthread thread; 584 jint state; 585 jvmtiFrameInfo *frame_buffer; 586 jint frame_count; 587 } jvmtiStackInfo; 588 589 typedef struct 590 { 591 jthreadGroup parent; 592 char *name; 593 jint max_priority; 594 jboolean is_daemon; 595 } jvmtiThreadGroupInfo; 596 597 typedef struct 598 { 599 char *name; 600 jint priority; 601 jboolean is_daemon; 602 jthreadGroup thread_group; 603 jobject context_class_loader; 604 } jvmtiThreadInfo; 605 606 typedef struct 607 { 608 jlong max_value; 609 jboolean may_skip_forward; 610 jboolean may_skip_backward; 611 jvmtiTimerKind kind; 612 jlong reserved1; 613 jlong reserved2; 614 } jvmtiTimerInfo; 615 616 typedef void (JNICALL *jvmtiExtensionEvent) 617 (jvmtiEnv *jvmti_env, ...); 618 619 typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback) 620 (jlong class_tag, jlong size, jlong *tag_ptr, void *user_data); 621 622 typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback) 623 (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong *tag_ptr, 624 void *user_data); 625 626 typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback) 627 (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, 628 jlong *tag_ptr, jlong referrer_tag, jint referrer_index, void *user_data); 629 630 typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback) 631 (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong *tag_ptr, 632 jlong thread_tag, jint depth, jmethodID method, jint slot, void *user_data); 633 634 typedef void (JNICALL *jvmtiStartFunction) 635 (jvmtiEnv *env, JNIEnv *jni_env, void *arg); 636 637 /* 638 * JVM Tool Interface Base Types 639 */ 640 typedef struct JNINativeInterface_ jniNativeInterface; 641 642 struct _Jv_jvmtiEnv 643 { 644 void *reserved1; 645 646 jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv *env, 647 jvmtiEventMode mode, 648 jvmtiEvent event_type, 649 jthread event_thread, ...); 650 void *reserved3; 651 652 jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv *env, 653 jint *threads_count_ptr, 654 jthread **threads_ptr); 655 656 jvmtiError (JNICALL *SuspendThread) (jvmtiEnv *env, 657 jthread thread); 658 659 jvmtiError (JNICALL *ResumeThread) (jvmtiEnv *env, 660 jthread thread); 661 662 jvmtiError (JNICALL *StopThread) (jvmtiEnv *env, 663 jthread thread, 664 jobject exception); 665 666 jvmtiError (JNICALL *InterruptThread) (jvmtiEnv *env, 667 jthread thread); 668 669 jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv *env, 670 jthread thread, 671 jvmtiThreadInfo *info_ptr); 672 673 jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv *env, 674 jthread thread, 675 jint *owned_monitor_count_ptr, 676 jobject **owned_monitors_ptr); 677 678 jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv *env, 679 jthread thread, 680 jobject *monitor_ptr); 681 682 jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv *env, 683 jthread thread, 684 jvmtiStartFunction proc, 685 const void *arg, 686 jint priority); 687 688 jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv *env, 689 jint *group_count_ptr, 690 jthreadGroup **groups_ptr); 691 692 jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv *env, 693 jthreadGroup group, 694 jvmtiThreadGroupInfo *info_ptr); 695 696 jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv *env, 697 jthreadGroup group, 698 jint *thread_count_ptr, 699 jthread **threads_ptr, 700 jint *group_count_ptr, 701 jthreadGroup **groups_ptr); 702 jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv *env, 703 jthread thread, 704 jint *count_ptr); 705 706 jvmtiError (JNICALL *GetThreadState) (jvmtiEnv *env, 707 jthread thread, 708 jint *thread_state_ptr); 709 710 void *reserved18; 711 712 jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv *env, 713 jthread thread, 714 jint depth, 715 jmethodID *method_ptr, 716 jlocation *location_ptr); 717 718 jvmtiError (JNICALL *NotifyPopFrame) (jvmtiEnv *env, 719 jthread thread, 720 jint depth); 721 722 jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv *env, 723 jthread thread, 724 jint depth, 725 jint slot, 726 jobject *value_ptr); 727 728 jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv *env, 729 jthread thread, 730 jint depth, 731 jint slot, 732 jint *value_ptr); 733 734 jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv *env, 735 jthread thread, 736 jint depth, 737 jint slot, 738 jlong *value_ptr); 739 740 jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv *env, 741 jthread thread, 742 jint depth, 743 jint slot, 744 jfloat *value_ptr); 745 746 jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv *env, 747 jthread thread, 748 jint depth, 749 jint slot, 750 jdouble *value_ptr); 751 752 jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv *env, 753 jthread thread, 754 jint depth, 755 jint slot, 756 jobject value); 757 758 jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv *env, 759 jthread thread, 760 jint depth, 761 jint slot, 762 jint value); 763 764 jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv *env, 765 jthread thread, 766 jint depth, 767 jint slot, 768 jlong value); 769 770 jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv *env, 771 jthread thread, 772 jint depth, 773 jint slot, 774 jfloat value); 775 776 jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv *env, 777 jthread thread, 778 jint depth, 779 jint slot, 780 jdouble value); 781 782 jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv *env, 783 const char *name, 784 jrawMonitorID *monitor_ptr); 785 786 jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv *env, 787 jrawMonitorID monitor); 788 789 jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv *env, 790 jrawMonitorID monitor); 791 792 jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv *env, 793 jrawMonitorID monitor); 794 795 jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv *env, 796 jrawMonitorID monitor, 797 jlong millis); 798 799 jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv *env, 800 jrawMonitorID monitor); 801 802 jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv *env, 803 jrawMonitorID monitor); 804 805 jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv *env, 806 jmethodID method, 807 jlocation location); 808 809 jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv *env, 810 jmethodID method, 811 jlocation location); 812 813 void *reserved40; 814 815 jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv *env, 816 jclass klass, 817 jfieldID field); 818 819 jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv *env, 820 jclass klass, 821 jfieldID field); 822 823 jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv *env, 824 jclass klass, 825 jfieldID field); 826 827 jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv *env, 828 jclass klass, 829 jfieldID field); 830 831 void *reserved45; 832 833 jvmtiError (JNICALL *Allocate) (jvmtiEnv *env, 834 jlong size, 835 unsigned char **mem_ptr); 836 837 jvmtiError (JNICALL *Deallocate) (jvmtiEnv *env, 838 unsigned char *mem); 839 840 jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv *env, 841 jclass klass, 842 char **signature_ptr, 843 char **generic_ptr); 844 845 jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv *env, 846 jclass klass, 847 jint *status_ptr); 848 849 jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv *env, 850 jclass klass, 851 char **source_name_ptr); 852 853 jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv *env, 854 jclass klass, 855 jint *modifiers_ptr); 856 857 jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv *env, 858 jclass klass, 859 jint *method_count_ptr, 860 jmethodID **methods_ptr); 861 862 jvmtiError (JNICALL *GetClassFields) (jvmtiEnv *env, 863 jclass klass, 864 jint *field_count_ptr, 865 jfieldID **fields_ptr); 866 867 jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv *env, 868 jclass klass, 869 jint *interface_count_ptr, 870 jclass **interfaces_ptr); 871 872 jvmtiError (JNICALL *IsInterface) (jvmtiEnv *env, 873 jclass klass, 874 jboolean *is_interface_ptr); 875 876 jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv *env, 877 jclass klass, 878 jboolean *is_array_class_ptr); 879 880 jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv *env, 881 jclass klass, 882 jobject *classloader_ptr); 883 884 jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv *env, 885 jobject object, 886 jint *hash_code_ptr); 887 888 jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv *env, 889 jobject object, 890 jvmtiMonitorUsage *info_ptr); 891 892 jvmtiError (JNICALL *GetFieldName) (jvmtiEnv *env, 893 jclass klass, 894 jfieldID field, 895 char **name_ptr, 896 char **signature_ptr, 897 char **generic_ptr); 898 899 jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv *env, 900 jclass klass, 901 jfieldID field, 902 jclass *declaring_class_ptr); 903 904 jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv *env, 905 jclass klass, 906 jfieldID field, 907 jint *modifiers_ptr); 908 909 jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv *env, 910 jclass klass, 911 jfieldID field, 912 jboolean *is_synthetic_ptr); 913 914 jvmtiError (JNICALL *GetMethodName) (jvmtiEnv *env, 915 jmethodID method, 916 char **name_ptr, 917 char **signature_ptr, 918 char **generic_ptr); 919 920 jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv *env, 921 jmethodID method, 922 jclass *declaring_class_ptr); 923 924 925 jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv *env, 926 jmethodID method, 927 jint *modifiers_ptr); 928 929 void *reserved67; 930 931 jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv *env, 932 jmethodID method, 933 jint *max_ptr); 934 935 jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv *env, 936 jmethodID method, 937 jint *size_ptr); 938 939 jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv *env, 940 jmethodID method, 941 jint *entry_count_ptr, 942 jvmtiLineNumberEntry **table_ptr); 943 944 jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv *env, 945 jmethodID method, 946 jlocation *start_location_ptr, 947 jlocation *end_location_ptr); 948 949 jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv *env, 950 jmethodID method, 951 jint *entry_count_ptr, 952 jvmtiLocalVariableEntry **table_ptr); 953 954 void *reserved73; 955 956 void *reserved74; 957 958 jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv *env, 959 jmethodID method, 960 jint *bytecode_count_ptr, 961 unsigned char **bytecodes_ptr); 962 963 jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv *env, 964 jmethodID method, 965 jboolean *is_native_ptr); 966 967 jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv *env, 968 jmethodID method, 969 jboolean *is_synthetic_ptr); 970 971 jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv *env, 972 jint *class_count_ptr, 973 jclass **classes_ptr); 974 975 jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv *env, 976 jobject initiating_loader, 977 jint *class_count_ptr, 978 jclass **classes_ptr); 979 980 jvmtiError (JNICALL *PopFrame) (jvmtiEnv *env, 981 jthread thread); 982 983 void *reserved81; 984 985 void *reserved82; 986 987 void *reserved83; 988 989 void *reserved84; 990 991 void *reserved85; 992 993 void *reserved86; 994 995 jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv *env, 996 jint class_count, 997 const jvmtiClassDefinition* class_definitions); 998 999 jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv *env, 1000 jint *version_ptr); 1001 1002 jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv *env, 1003 jvmtiCapabilities *capabilities_ptr); 1004 1005 jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv *env, 1006 jclass klass, 1007 char **source_debug_extension_ptr); 1008 1009 jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv *env, 1010 jmethodID method, 1011 jboolean *is_obsolete_ptr); 1012 1013 jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv *env, 1014 jint request_count, 1015 const jthread *request_list, 1016 jvmtiError *results); 1017 1018 jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv *env, 1019 jint request_count, 1020 const jthread *request_list, 1021 jvmtiError *results); 1022 1023 void *reserved94; 1024 1025 void *reserved95; 1026 1027 void *reserved96; 1028 1029 void *reserved97; 1030 1031 void *reserved98; 1032 1033 void *reserved99; 1034 1035 jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv *env, 1036 jint max_frame_count, 1037 jvmtiStackInfo **stack_info_ptr, 1038 jint *thread_count_ptr); 1039 1040 jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv *env, 1041 jint thread_count, 1042 const jthread *thread_list, 1043 jint max_frame_count, 1044 jvmtiStackInfo **stack_info_ptr); 1045 1046 jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv *env, 1047 jthread thread, 1048 void **data_ptr); 1049 1050 jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv *env, 1051 jthread thread, 1052 const void *data); 1053 1054 jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv *env, 1055 jthread thread, 1056 jint start_depth, 1057 jint max_frame_count, 1058 jvmtiFrameInfo *frame_buffer, 1059 jint *count_ptr); 1060 1061 void *reserved105; 1062 1063 jvmtiError (JNICALL *GetTag) (jvmtiEnv *env, 1064 jobject object, 1065 jlong *tag_ptr); 1066 1067 jvmtiError (JNICALL *SetTag) (jvmtiEnv *env, 1068 jobject object, 1069 jlong tag); 1070 1071 jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv *env); 1072 1073 jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv *env, 1074 jobject object, 1075 jvmtiObjectReferenceCallback object_reference_callback, 1076 void *user_data); 1077 1078 jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv *env, 1079 jvmtiHeapRootCallback heap_root_callback, 1080 jvmtiStackReferenceCallback stack_ref_callback, 1081 jvmtiObjectReferenceCallback object_ref_callback, 1082 void *user_data); 1083 1084 jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv *env, 1085 jvmtiHeapObjectFilter object_filter, 1086 jvmtiHeapObjectCallback heap_object_callback, 1087 void *user_data); 1088 1089 jvmtiError (JNICALL *IterateOverInstanceOfClass) (jvmtiEnv *env, 1090 jclass klass, 1091 jvmtiHeapObjectFilter object_filter, 1092 jvmtiHeapObjectCallback heap_object_callback, 1093 void *user_data); 1094 1095 void *reserved113; 1096 1097 jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv *env, 1098 jint tag_count, 1099 const jlong *tags, 1100 jint *count_ptr, 1101 jobject **object_result_ptr, 1102 jlong **tag_result_ptr); 1103 1104 void *reserved115; 1105 1106 void *reserved116; 1107 1108 void *reserved117; 1109 1110 void *reserved118; 1111 1112 void *reserved119; 1113 1114 jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv *env, 1115 const jniNativeInterface *function_table); 1116 1117 jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv *env, 1118 jniNativeInterface **function_table_ptr); 1119 1120 jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv *env, 1121 const jvmtiEventCallbacks *callbacks, 1122 jint size_of_callbacks); 1123 1124 jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv *env, 1125 jvmtiEvent event_type); 1126 1127 jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv *env, 1128 jint *extension_count_ptr, 1129 jvmtiExtensionFunctionInfo **extensions); 1130 1131 jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv *env, 1132 jint *extension_count_ptr, 1133 jvmtiExtensionEventInfo **extensions); 1134 1135 jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv *env, 1136 jint extension_event_index, 1137 jvmtiExtensionEvent callback); 1138 1139 jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv *env); 1140 1141 jvmtiError (JNICALL *GetErrorName) (jvmtiEnv *env, 1142 jvmtiError error, 1143 char **name_ptr); 1144 1145 jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv *env, 1146 jvmtiJlocationFormat *format_ptr); 1147 1148 jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv *env, 1149 jint *count_ptr, 1150 char ***property_ptr); 1151 1152 jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv *env, 1153 const char *property, 1154 char **value_ptr); 1155 1156 jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv *env, 1157 const char *property, 1158 const char *value); 1159 1160 jvmtiError (JNICALL *GetPhase) (jvmtiEnv *env, 1161 jvmtiPhase *phase_ptr); 1162 1163 jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv *env, 1164 jvmtiTimerInfo *info_ptr); 1165 1166 jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv *env, 1167 jlong *nanos_ptr); 1168 1169 jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv *env, 1170 jvmtiTimerInfo *info_ptr); 1171 1172 jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv *env, 1173 jthread thread, 1174 jlong *nanos_ptr); 1175 1176 jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv *env, 1177 jvmtiTimerInfo *info_ptr); 1178 1179 jvmtiError (JNICALL *GetTime) (jvmtiEnv *env, 1180 jlong *nanos_ptr); 1181 1182 jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv *env, 1183 jvmtiCapabilities *capabilities_ptr); 1184 1185 void *reserved141; 1186 1187 jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv *env, 1188 const jvmtiCapabilities *capabilities_ptr); 1189 1190 jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv *env, 1191 const jvmtiCapabilities *capabilities_ptr); 1192 1193 jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv *env, 1194 jint *processor_count_ptr); 1195 1196 void *reserved145; 1197 1198 void *reserved146; 1199 1200 jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv *env, 1201 void **data_ptr); 1202 1203 jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv *env, 1204 const void *data); 1205 1206 jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv *env, 1207 const char *segment); 1208 1209 jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv *env, 1210 jvmtiVerboseFlag flag, 1211 jboolean value); 1212 1213 void *reserved151; 1214 1215 void *reserved152; 1216 1217 void *reserved153; 1218 1219 jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv *env, 1220 jobject object, 1221 jlong *size_ptr); 1222 }; 1223 1224 #ifdef __cplusplus 1225 class _Jv_JVMTIEnv 1226 { 1227 public: 1228 /* Method table */ 1229 struct _Jv_jvmtiEnv *p; 1230 1231 #ifdef _CLASSPATH_JVMTIENV_CONTENTS 1232 _CLASSPATH_JVMTIENV_CONTENTS 1233 #endif 1234 SetEventNotificationMode(jvmtiEventMode mode,jvmtiEvent event_type,jthread event_thread,...)1235 jvmtiError SetEventNotificationMode (jvmtiEventMode mode, 1236 jvmtiEvent event_type, 1237 jthread event_thread, ...) 1238 { 1239 va_list args; 1240 va_start (args, event_thread); 1241 jvmtiError result = p->SetEventNotificationMode (this, mode, event_type, 1242 event_thread, args); 1243 va_end (args); 1244 return result; 1245 } 1246 GetAllThreads(jint * threads_count_ptr,jthread ** threads_ptr)1247 jvmtiError GetAllThreads (jint *threads_count_ptr, jthread **threads_ptr) 1248 { return p->GetAllThreads (this, threads_count_ptr, threads_ptr); } 1249 SuspendThread(jthread thread)1250 jvmtiError SuspendThread (jthread thread) 1251 { return p->SuspendThread (this, thread); } 1252 ResumeThread(jthread thread)1253 jvmtiError ResumeThread (jthread thread) 1254 { return p->ResumeThread (this, thread); } 1255 StopThread(jthread thread,jobject exception)1256 jvmtiError StopThread (jthread thread, jobject exception) 1257 { return p->StopThread (this, thread, exception); } 1258 InterruptThread(jthread thread)1259 jvmtiError InterruptThread (jthread thread) 1260 { return p->InterruptThread (this, thread); } 1261 GetThreadInfo(jthread thread,jvmtiThreadInfo * info_ptr)1262 jvmtiError GetThreadInfo (jthread thread, jvmtiThreadInfo *info_ptr) 1263 { return p->GetThreadInfo (this, thread, info_ptr); } 1264 GetOwnedMonitorInfo(jthread thread,jint * owned_monitor_count_ptr,jobject ** owned_monitors_ptr)1265 jvmtiError GetOwnedMonitorInfo (jthread thread, 1266 jint *owned_monitor_count_ptr, 1267 jobject **owned_monitors_ptr) 1268 { 1269 return p->GetOwnedMonitorInfo (this, thread, owned_monitor_count_ptr, 1270 owned_monitors_ptr); 1271 } 1272 GetCurrentContendedMonitor(jthread thread,jobject * monitor_ptr)1273 jvmtiError GetCurrentContendedMonitor (jthread thread, jobject *monitor_ptr) 1274 { return p->GetCurrentContendedMonitor (this, thread, monitor_ptr); } 1275 RunAgentThread(jthread thread,jvmtiStartFunction proc,const void * arg,jint priority)1276 jvmtiError RunAgentThread (jthread thread, jvmtiStartFunction proc, 1277 const void *arg, jint priority) 1278 { return p->RunAgentThread (this, thread, proc, arg, priority); } 1279 GetTopThreadGroups(jint * group_count_ptr,jthreadGroup ** groups_ptr)1280 jvmtiError GetTopThreadGroups (jint *group_count_ptr, 1281 jthreadGroup **groups_ptr) 1282 { return p->GetTopThreadGroups (this, group_count_ptr, groups_ptr); } 1283 GetThreadGroupInfo(jthreadGroup group,jvmtiThreadGroupInfo * info_ptr)1284 jvmtiError GetThreadGroupInfo (jthreadGroup group, 1285 jvmtiThreadGroupInfo *info_ptr) 1286 { return p->GetThreadGroupInfo (this, group, info_ptr); } 1287 GetThreadGroupChildren(jthreadGroup group,jint * thread_count_ptr,jthread ** threads_ptr,jint * group_count_ptr,jthreadGroup ** groups_ptr)1288 jvmtiError GetThreadGroupChildren (jthreadGroup group, 1289 jint *thread_count_ptr, 1290 jthread **threads_ptr, 1291 jint *group_count_ptr, 1292 jthreadGroup **groups_ptr) 1293 { 1294 return p->GetThreadGroupChildren (this, group, thread_count_ptr, 1295 threads_ptr, group_count_ptr, 1296 groups_ptr); 1297 } 1298 GetFrameCount(jthread thread,jint * count_ptr)1299 jvmtiError GetFrameCount (jthread thread, jint *count_ptr) 1300 { return p->GetFrameCount (this, thread, count_ptr); } 1301 GetThreadState(jthread thread,jint * thread_state_ptr)1302 jvmtiError GetThreadState (jthread thread, jint *thread_state_ptr) 1303 { return p->GetThreadState (this, thread, thread_state_ptr); } 1304 GetFrameLocation(jthread thread,jint depth,jmethodID * method_ptr,jlocation * location_ptr)1305 jvmtiError GetFrameLocation (jthread thread, jint depth, 1306 jmethodID *method_ptr, jlocation *location_ptr) 1307 { 1308 return p->GetFrameLocation (this, thread, depth, method_ptr, 1309 location_ptr); 1310 } 1311 NotifyPopFrame(jthread thread,jint depth)1312 jvmtiError NotifyPopFrame (jthread thread, jint depth) 1313 { return p->NotifyPopFrame (this, thread, depth); } 1314 GetLocalObject(jthread thread,jint depth,jint slot,jobject * value_ptr)1315 jvmtiError GetLocalObject (jthread thread, jint depth, jint slot, 1316 jobject *value_ptr) 1317 { return p->GetLocalObject (this, thread, depth, slot, value_ptr); } 1318 GetLocalInt(jthread thread,jint depth,jint slot,jint * value_ptr)1319 jvmtiError GetLocalInt (jthread thread, jint depth, jint slot, 1320 jint *value_ptr) 1321 { return p->GetLocalInt (this, thread, depth, slot, value_ptr); } 1322 GetLocalLong(jthread thread,jint depth,jint slot,jlong * value_ptr)1323 jvmtiError GetLocalLong (jthread thread, jint depth, jint slot, 1324 jlong *value_ptr) 1325 { return p->GetLocalLong (this, thread, depth, slot, value_ptr); } 1326 GetLocalFloat(jthread thread,jint depth,jint slot,jfloat * value_ptr)1327 jvmtiError GetLocalFloat (jthread thread, jint depth, jint slot, 1328 jfloat *value_ptr) 1329 { return p->GetLocalFloat (this, thread, depth, slot, value_ptr); } 1330 GetLocalDouble(jthread thread,jint depth,jint slot,jdouble * value_ptr)1331 jvmtiError GetLocalDouble (jthread thread, jint depth, jint slot, 1332 jdouble *value_ptr) 1333 { return p->GetLocalDouble (this, thread, depth, slot, value_ptr); } 1334 SetLocalObject(jthread thread,jint depth,jint slot,jobject value)1335 jvmtiError SetLocalObject (jthread thread, jint depth, jint slot, 1336 jobject value) 1337 { return p->SetLocalObject (this, thread, depth, slot, value); } 1338 SetLocalInt(jthread thread,jint depth,jint slot,jint value)1339 jvmtiError SetLocalInt (jthread thread, jint depth, jint slot, 1340 jint value) 1341 { return p->SetLocalInt (this, thread, depth, slot, value); } 1342 SetLocalLong(jthread thread,jint depth,jint slot,jlong value)1343 jvmtiError SetLocalLong (jthread thread, jint depth, jint slot, 1344 jlong value) 1345 { return p->SetLocalLong (this, thread, depth, slot, value); } 1346 SetLocalFloat(jthread thread,jint depth,jint slot,jfloat value)1347 jvmtiError SetLocalFloat (jthread thread, jint depth, jint slot, 1348 jfloat value) 1349 { return p->SetLocalFloat (this, thread, depth, slot, value); } 1350 SetLocalDouble(jthread thread,jint depth,jint slot,jdouble value)1351 jvmtiError SetLocalDouble (jthread thread, jint depth, jint slot, 1352 jdouble value) 1353 { return p->SetLocalDouble (this, thread, depth, slot, value); } 1354 CreateRawMonitor(const char * name,jrawMonitorID * monitor_ptr)1355 jvmtiError CreateRawMonitor (const char *name, jrawMonitorID *monitor_ptr) 1356 { return p->CreateRawMonitor (this, name, monitor_ptr); } 1357 DestroyRawMonitor(jrawMonitorID monitor)1358 jvmtiError DestroyRawMonitor (jrawMonitorID monitor) 1359 { return p->DestroyRawMonitor (this, monitor); } 1360 RawMonitorEnter(jrawMonitorID monitor)1361 jvmtiError RawMonitorEnter (jrawMonitorID monitor) 1362 { return p->RawMonitorEnter (this, monitor); } 1363 RawMonitorExit(jrawMonitorID monitor)1364 jvmtiError RawMonitorExit (jrawMonitorID monitor) 1365 { return p->RawMonitorExit (this, monitor); } 1366 RawMonitorWait(jrawMonitorID monitor,jlong millis)1367 jvmtiError RawMonitorWait (jrawMonitorID monitor, jlong millis) 1368 { return p->RawMonitorWait (this, monitor, millis); } 1369 RawMonitorNotify(jrawMonitorID monitor)1370 jvmtiError RawMonitorNotify (jrawMonitorID monitor) 1371 { return p->RawMonitorNotify (this, monitor); } 1372 RawMonitorNotifyAll(jrawMonitorID monitor)1373 jvmtiError RawMonitorNotifyAll (jrawMonitorID monitor) 1374 { return p->RawMonitorNotifyAll (this, monitor); } 1375 SetBreakpoint(jmethodID method,jlocation location)1376 jvmtiError SetBreakpoint (jmethodID method, jlocation location) 1377 { return p->SetBreakpoint (this, method, location); } 1378 ClearBreakpoint(jmethodID method,jlocation location)1379 jvmtiError ClearBreakpoint (jmethodID method, jlocation location) 1380 { return p->ClearBreakpoint (this, method, location); } 1381 SetFieldAccessWatch(jclass klass,jfieldID field)1382 jvmtiError SetFieldAccessWatch (jclass klass, jfieldID field) 1383 { return p->SetFieldAccessWatch (this, klass, field); } 1384 ClearFieldAccessWatch(jclass klass,jfieldID field)1385 jvmtiError ClearFieldAccessWatch (jclass klass, jfieldID field) 1386 { return p->ClearFieldAccessWatch (this, klass, field); } 1387 SetFieldModificationWatch(jclass klass,jfieldID field)1388 jvmtiError SetFieldModificationWatch (jclass klass, jfieldID field) 1389 { return p->SetFieldModificationWatch (this, klass, field); } 1390 ClearFieldModificationWatch(jclass klass,jfieldID field)1391 jvmtiError ClearFieldModificationWatch (jclass klass, jfieldID field) 1392 { return p->ClearFieldModificationWatch (this, klass, field); } 1393 Allocate(jlong size,unsigned char ** mem_ptr)1394 jvmtiError Allocate (jlong size, unsigned char **mem_ptr) 1395 { return p->Allocate (this, size, mem_ptr); } 1396 Deallocate(unsigned char * mem)1397 jvmtiError Deallocate (unsigned char *mem) 1398 { return p->Deallocate (this, mem); } 1399 GetClassSignature(jclass klass,char ** signature_ptr,char ** generic_ptr)1400 jvmtiError GetClassSignature (jclass klass, char **signature_ptr, 1401 char **generic_ptr) 1402 { return p->GetClassSignature (this, klass, signature_ptr, generic_ptr); } 1403 GetClassStatus(jclass klass,jint * status_ptr)1404 jvmtiError GetClassStatus (jclass klass, jint *status_ptr) 1405 { return p->GetClassStatus (this, klass, status_ptr); } 1406 GetSourceFileName(jclass klass,char ** source_name_ptr)1407 jvmtiError GetSourceFileName (jclass klass, char **source_name_ptr) 1408 { return p->GetSourceFileName (this, klass, source_name_ptr); } 1409 GetClassModifiers(jclass klass,jint * modifiers_ptr)1410 jvmtiError GetClassModifiers (jclass klass, jint *modifiers_ptr) 1411 { return p->GetClassModifiers (this, klass, modifiers_ptr); } 1412 GetClassMethods(jclass klass,jint * method_count_ptr,jmethodID ** methods_ptr)1413 jvmtiError GetClassMethods (jclass klass, jint *method_count_ptr, 1414 jmethodID **methods_ptr) 1415 { return p->GetClassMethods (this, klass, method_count_ptr, methods_ptr); } 1416 GetClassFields(jclass klass,jint * field_count_ptr,jfieldID ** fields_ptr)1417 jvmtiError GetClassFields (jclass klass, jint *field_count_ptr, 1418 jfieldID **fields_ptr) 1419 { return p->GetClassFields (this, klass, field_count_ptr, fields_ptr); } 1420 GetImplementedInterfaces(jclass klass,jint * interface_count_ptr,jclass ** interfaces_ptr)1421 jvmtiError GetImplementedInterfaces (jclass klass, 1422 jint *interface_count_ptr, 1423 jclass **interfaces_ptr) 1424 { 1425 return p->GetImplementedInterfaces (this, klass, interface_count_ptr, 1426 interfaces_ptr); 1427 } 1428 IsInterface(jclass klass,jboolean * is_interface_ptr)1429 jvmtiError IsInterface (jclass klass, jboolean *is_interface_ptr) 1430 { return p->IsInterface (this, klass, is_interface_ptr); } 1431 IsArrayClass(jclass klass,jboolean * is_array_class_ptr)1432 jvmtiError IsArrayClass (jclass klass, jboolean *is_array_class_ptr) 1433 { return p->IsArrayClass (this, klass, is_array_class_ptr); } 1434 GetClassLoader(jclass klass,jobject * classloader_ptr)1435 jvmtiError GetClassLoader (jclass klass, jobject *classloader_ptr) 1436 { return p->GetClassLoader (this, klass, classloader_ptr); } 1437 GetObjectHashCode(jobject object,jint * hash_code_ptr)1438 jvmtiError GetObjectHashCode (jobject object, jint *hash_code_ptr) 1439 { return p->GetObjectHashCode (this, object, hash_code_ptr); } 1440 GetObjectMonitorUsage(jobject object,jvmtiMonitorUsage * info_ptr)1441 jvmtiError GetObjectMonitorUsage (jobject object, 1442 jvmtiMonitorUsage *info_ptr) 1443 { return p->GetObjectMonitorUsage (this, object, info_ptr); } 1444 GetFieldName(jclass klass,jfieldID field,char ** name_ptr,char ** signature_ptr,char ** generic_ptr)1445 jvmtiError GetFieldName (jclass klass, jfieldID field, char **name_ptr, 1446 char **signature_ptr, char **generic_ptr) 1447 { 1448 return p->GetFieldName (this, klass, field, name_ptr, 1449 signature_ptr, generic_ptr); 1450 } 1451 GetFieldDeclaringClass(jclass klass,jfieldID field,jclass * declaring_class_ptr)1452 jvmtiError GetFieldDeclaringClass (jclass klass, jfieldID field, 1453 jclass *declaring_class_ptr) 1454 { 1455 return p->GetFieldDeclaringClass (this, klass, field, 1456 declaring_class_ptr); 1457 } 1458 GetFieldModifiers(jclass klass,jfieldID field,jint * modifiers_ptr)1459 jvmtiError GetFieldModifiers (jclass klass, jfieldID field, 1460 jint *modifiers_ptr) 1461 { return p->GetFieldModifiers (this, klass, field, modifiers_ptr); } 1462 IsFieldSynthetic(jclass klass,jfieldID field,jboolean * is_synthetic_ptr)1463 jvmtiError IsFieldSynthetic (jclass klass, jfieldID field, 1464 jboolean *is_synthetic_ptr) 1465 { return p->IsFieldSynthetic (this, klass, field, is_synthetic_ptr); } 1466 GetMethodName(jmethodID method,char ** name_ptr,char ** signature_ptr,char ** generic_ptr)1467 jvmtiError GetMethodName (jmethodID method, char **name_ptr, 1468 char **signature_ptr, char **generic_ptr) 1469 { 1470 return p->GetMethodName (this, method, name_ptr, signature_ptr, 1471 generic_ptr); 1472 } 1473 GetMethodDeclaringClass(jmethodID method,jclass * declaring_class_ptr)1474 jvmtiError GetMethodDeclaringClass (jmethodID method, 1475 jclass *declaring_class_ptr) 1476 { return p->GetMethodDeclaringClass (this, method, declaring_class_ptr); } 1477 1478 GetMethodModifiers(jmethodID method,jint * modifiers_ptr)1479 jvmtiError GetMethodModifiers (jmethodID method, jint *modifiers_ptr) 1480 { return p->GetMethodModifiers (this, method, modifiers_ptr); } 1481 GetMaxLocals(jmethodID method,jint * max_ptr)1482 jvmtiError GetMaxLocals (jmethodID method, jint *max_ptr) 1483 { return p->GetMaxLocals (this, method, max_ptr); } 1484 GetArgumentsSize(jmethodID method,jint * size_ptr)1485 jvmtiError GetArgumentsSize (jmethodID method, jint *size_ptr) 1486 { return p->GetArgumentsSize (this, method, size_ptr); } 1487 GetLineNumberTable(jmethodID method,jint * entry_count_ptr,jvmtiLineNumberEntry ** table_ptr)1488 jvmtiError GetLineNumberTable (jmethodID method, jint *entry_count_ptr, 1489 jvmtiLineNumberEntry **table_ptr) 1490 { return p->GetLineNumberTable (this, method, entry_count_ptr, table_ptr); } 1491 GetMethodLocation(jmethodID method,jlocation * start_location_ptr,jlocation * end_location_ptr)1492 jvmtiError GetMethodLocation (jmethodID method, 1493 jlocation *start_location_ptr, 1494 jlocation *end_location_ptr) 1495 { 1496 return p->GetMethodLocation (this, method, start_location_ptr, 1497 end_location_ptr); 1498 } 1499 GetLocalVariableTable(jmethodID method,jint * entry_count_ptr,jvmtiLocalVariableEntry ** table_ptr)1500 jvmtiError GetLocalVariableTable (jmethodID method, jint *entry_count_ptr, 1501 jvmtiLocalVariableEntry **table_ptr) 1502 { 1503 return p->GetLocalVariableTable (this, method, entry_count_ptr, 1504 table_ptr); 1505 } 1506 GetBytecodes(jmethodID method,jint * bytecode_count_ptr,unsigned char ** bytecodes_ptr)1507 jvmtiError GetBytecodes (jmethodID method, jint *bytecode_count_ptr, 1508 unsigned char **bytecodes_ptr) 1509 { 1510 return p->GetBytecodes (this, method, bytecode_count_ptr, 1511 bytecodes_ptr); 1512 } 1513 IsMethodNative(jmethodID method,jboolean * is_native_ptr)1514 jvmtiError IsMethodNative (jmethodID method, jboolean *is_native_ptr) 1515 { return p->IsMethodNative (this, method, is_native_ptr); } 1516 IsMethodSynthetic(jmethodID method,jboolean * is_synthetic_ptr)1517 jvmtiError IsMethodSynthetic (jmethodID method, jboolean *is_synthetic_ptr) 1518 { return p->IsMethodSynthetic (this, method, is_synthetic_ptr); } 1519 GetLoadedClasses(jint * class_count_ptr,jclass ** classes_ptr)1520 jvmtiError GetLoadedClasses (jint *class_count_ptr, jclass **classes_ptr) 1521 { return p->GetLoadedClasses (this, class_count_ptr, classes_ptr); } 1522 GetClassLoaderClasses(jobject initiating_loader,jint * class_count_ptr,jclass ** classes_ptr)1523 jvmtiError GetClassLoaderClasses (jobject initiating_loader, 1524 jint *class_count_ptr, 1525 jclass **classes_ptr) 1526 { 1527 return p->GetClassLoaderClasses (this, initiating_loader, 1528 class_count_ptr, classes_ptr); 1529 } 1530 PopFrame(jthread thread)1531 jvmtiError PopFrame (jthread thread) 1532 { return p->PopFrame (this, thread); } 1533 RedefineClasses(jint class_count,const jvmtiClassDefinition * class_definitions)1534 jvmtiError RedefineClasses (jint class_count, 1535 const jvmtiClassDefinition* class_definitions) 1536 { return p->RedefineClasses (this, class_count, class_definitions); } 1537 GetVersionNumber(jint * version_ptr)1538 jvmtiError GetVersionNumber (jint *version_ptr) 1539 { return p->GetVersionNumber (this, version_ptr); } 1540 GetCapabilities(jvmtiCapabilities * capabilities_ptr)1541 jvmtiError GetCapabilities (jvmtiCapabilities *capabilities_ptr) 1542 { return p->GetCapabilities (this, capabilities_ptr); } 1543 GetSourceDebugExtension(jclass klass,char ** source_debug_extension_ptr)1544 jvmtiError GetSourceDebugExtension (jclass klass, 1545 char **source_debug_extension_ptr) 1546 { 1547 return p->GetSourceDebugExtension (this, klass, 1548 source_debug_extension_ptr); 1549 } 1550 IsMethodObsolete(jmethodID method,jboolean * is_obsolete_ptr)1551 jvmtiError IsMethodObsolete (jmethodID method, jboolean *is_obsolete_ptr) 1552 { return p->IsMethodObsolete (this, method, is_obsolete_ptr); } 1553 1554 SuspendThreadList(jint request_count,const jthread * request_list,jvmtiError * results)1555 jvmtiError SuspendThreadList (jint request_count, 1556 const jthread *request_list, 1557 jvmtiError *results) 1558 { return p->SuspendThreadList (this, request_count, request_list, results); } 1559 ResumeThreadList(jint request_count,const jthread * request_list,jvmtiError * results)1560 jvmtiError ResumeThreadList (jint request_count, 1561 const jthread *request_list, 1562 jvmtiError *results) 1563 { return p->ResumeThreadList (this, request_count, request_list, results); } 1564 GetAllStackTraces(jint max_frame_count,jvmtiStackInfo ** stack_info_ptr,jint * thread_count_ptr)1565 jvmtiError GetAllStackTraces (jint max_frame_count, 1566 jvmtiStackInfo **stack_info_ptr, 1567 jint *thread_count_ptr) 1568 { 1569 return p->GetAllStackTraces (this, max_frame_count, stack_info_ptr, 1570 thread_count_ptr); 1571 } 1572 GetThreadListStackTraces(jint thread_count,const jthread * thread_list,jint max_frame_count,jvmtiStackInfo ** stack_info_ptr)1573 jvmtiError GetThreadListStackTraces (jint thread_count, 1574 const jthread *thread_list, 1575 jint max_frame_count, 1576 jvmtiStackInfo **stack_info_ptr) 1577 { 1578 return p->GetThreadListStackTraces (this, thread_count, thread_list, 1579 max_frame_count, stack_info_ptr); 1580 } 1581 GetThreadLocalStorage(jthread thread,void ** data_ptr)1582 jvmtiError GetThreadLocalStorage (jthread thread, void **data_ptr) 1583 { return p->GetThreadLocalStorage (this, thread, data_ptr); } 1584 SetThreadLocalStorage(jthread thread,const void * data)1585 jvmtiError SetThreadLocalStorage (jthread thread, const void *data) 1586 { return p->SetThreadLocalStorage (this, thread, data); } 1587 GetStackTrace(jthread thread,jint start_depth,jint max_frame_count,jvmtiFrameInfo * frame_buffer,jint * count_ptr)1588 jvmtiError GetStackTrace (jthread thread, jint start_depth, 1589 jint max_frame_count, 1590 jvmtiFrameInfo *frame_buffer, jint *count_ptr) 1591 { 1592 return p->GetStackTrace (this, thread, start_depth, max_frame_count, 1593 frame_buffer, count_ptr); 1594 } 1595 GetTag(jobject object,jlong * tag_ptr)1596 jvmtiError GetTag (jobject object, jlong *tag_ptr) 1597 { return p->GetTag (this, object, tag_ptr); } 1598 SetTag(jobject object,jlong tag)1599 jvmtiError SetTag (jobject object, jlong tag) 1600 { return p->SetTag (this, object, tag); } 1601 ForceGarbageCollection(void)1602 jvmtiError ForceGarbageCollection (void) 1603 { return p->ForceGarbageCollection (this); } 1604 IterateOverObjectsReachableFromObject(jobject object,jvmtiObjectReferenceCallback object_reference_callback,void * user_data)1605 jvmtiError IterateOverObjectsReachableFromObject (jobject object, 1606 jvmtiObjectReferenceCallback object_reference_callback, 1607 void *user_data) 1608 { 1609 return p->IterateOverObjectsReachableFromObject (this, object, 1610 object_reference_callback, 1611 user_data); 1612 } 1613 IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback,jvmtiStackReferenceCallback stack_ref_callback,jvmtiObjectReferenceCallback object_ref_callback,void * user_data)1614 jvmtiError IterateOverReachableObjects (jvmtiHeapRootCallback heap_root_callback, 1615 jvmtiStackReferenceCallback stack_ref_callback, 1616 jvmtiObjectReferenceCallback object_ref_callback, 1617 void *user_data) 1618 { 1619 return p->IterateOverReachableObjects (this, heap_root_callback, 1620 stack_ref_callback, 1621 object_ref_callback, 1622 user_data); 1623 } 1624 IterateOverHeap(jvmtiHeapObjectFilter object_filter,jvmtiHeapObjectCallback heap_object_callback,void * user_data)1625 jvmtiError IterateOverHeap (jvmtiHeapObjectFilter object_filter, 1626 jvmtiHeapObjectCallback heap_object_callback, 1627 void *user_data) 1628 { 1629 return p->IterateOverHeap (this, object_filter, heap_object_callback, 1630 user_data); 1631 } 1632 IterateOverInstanceOfClass(jclass klass,jvmtiHeapObjectFilter object_filter,jvmtiHeapObjectCallback heap_object_callback,void * user_data)1633 jvmtiError IterateOverInstanceOfClass (jclass klass, 1634 jvmtiHeapObjectFilter object_filter, 1635 jvmtiHeapObjectCallback heap_object_callback, 1636 void *user_data) 1637 { 1638 return p->IterateOverInstanceOfClass (this, klass, object_filter, 1639 heap_object_callback, user_data); 1640 } 1641 GetObjectsWithTags(jint tag_count,const jlong * tags,jint * count_ptr,jobject ** object_result_ptr,jlong ** tag_result_ptr)1642 jvmtiError GetObjectsWithTags (jint tag_count, const jlong *tags, 1643 jint *count_ptr, jobject **object_result_ptr, 1644 jlong **tag_result_ptr) 1645 { 1646 return p->GetObjectsWithTags (this, tag_count, tags, count_ptr, 1647 object_result_ptr, tag_result_ptr); 1648 } 1649 SetJNIFunctionTable(const jniNativeInterface * function_table)1650 jvmtiError SetJNIFunctionTable (const jniNativeInterface *function_table) 1651 { return p->SetJNIFunctionTable (this, function_table); } 1652 GetJNIFunctionTable(jniNativeInterface ** function_table_ptr)1653 jvmtiError GetJNIFunctionTable (jniNativeInterface **function_table_ptr) 1654 { return p->GetJNIFunctionTable (this, function_table_ptr); } 1655 SetEventCallbacks(const jvmtiEventCallbacks * callbacks,jint size_of_callbacks)1656 jvmtiError SetEventCallbacks (const jvmtiEventCallbacks *callbacks, 1657 jint size_of_callbacks) 1658 { return p->SetEventCallbacks (this, callbacks, size_of_callbacks); } 1659 GenerateEvents(jvmtiEvent event_type)1660 jvmtiError GenerateEvents (jvmtiEvent event_type) 1661 { return p->GenerateEvents (this, event_type); } 1662 GetExtensionFunctions(jint * extension_count_ptr,jvmtiExtensionFunctionInfo ** extensions)1663 jvmtiError GetExtensionFunctions (jint *extension_count_ptr, 1664 jvmtiExtensionFunctionInfo **extensions) 1665 { return p->GetExtensionFunctions (this, extension_count_ptr, extensions); } 1666 GetExtensionEvents(jint * extension_count_ptr,jvmtiExtensionEventInfo ** extensions)1667 jvmtiError GetExtensionEvents (jint *extension_count_ptr, 1668 jvmtiExtensionEventInfo **extensions) 1669 { return p->GetExtensionEvents (this, extension_count_ptr, extensions); } 1670 SetExtensionEventCallback(jint extension_event_index,jvmtiExtensionEvent callback)1671 jvmtiError SetExtensionEventCallback (jint extension_event_index, 1672 jvmtiExtensionEvent callback) 1673 { 1674 return p->SetExtensionEventCallback (this, extension_event_index, 1675 callback); 1676 } 1677 DisposeEnvironment(void)1678 jvmtiError DisposeEnvironment (void) 1679 { return p->DisposeEnvironment (this); } 1680 GetErrorName(jvmtiError error,char ** name_ptr)1681 jvmtiError GetErrorName (jvmtiError error, char **name_ptr) 1682 { return p->GetErrorName (this, error, name_ptr); } 1683 GetJLocationFormat(jvmtiJlocationFormat * format_ptr)1684 jvmtiError GetJLocationFormat (jvmtiJlocationFormat *format_ptr) 1685 { return p->GetJLocationFormat (this, format_ptr); } 1686 GetSystemProperties(jint * count_ptr,char *** property_ptr)1687 jvmtiError GetSystemProperties (jint *count_ptr, char ***property_ptr) 1688 { return p->GetSystemProperties (this, count_ptr, property_ptr); } 1689 GetSystemProperty(const char * property,char ** value_ptr)1690 jvmtiError GetSystemProperty (const char *property, char **value_ptr) 1691 { return p->GetSystemProperty (this, property, value_ptr); } 1692 SetSystemProperty(const char * property,const char * value)1693 jvmtiError SetSystemProperty (const char *property, const char *value) 1694 { return p->SetSystemProperty (this, property, value); } 1695 GetPhase(jvmtiPhase * phase_ptr)1696 jvmtiError GetPhase (jvmtiPhase *phase_ptr) 1697 { return p->GetPhase (this, phase_ptr); } 1698 GetCurrentThreadCpuTimerInfo(jvmtiTimerInfo * info_ptr)1699 jvmtiError GetCurrentThreadCpuTimerInfo (jvmtiTimerInfo *info_ptr) 1700 { return p->GetCurrentThreadCpuTimerInfo (this, info_ptr); } 1701 GetCurrentThreadCpuTime(jlong * nanos_ptr)1702 jvmtiError GetCurrentThreadCpuTime (jlong *nanos_ptr) 1703 { return p->GetCurrentThreadCpuTime (this, nanos_ptr); } 1704 GetThreadCpuTimerInfo(jvmtiTimerInfo * info_ptr)1705 jvmtiError GetThreadCpuTimerInfo (jvmtiTimerInfo *info_ptr) 1706 { return p->GetThreadCpuTimerInfo (this, info_ptr); } 1707 GetThreadCpuTime(jthread thread,jlong * nanos_ptr)1708 jvmtiError GetThreadCpuTime (jthread thread, jlong *nanos_ptr) 1709 { return p->GetThreadCpuTime (this, thread, nanos_ptr); } 1710 GetTimerInfo(jvmtiTimerInfo * info_ptr)1711 jvmtiError GetTimerInfo (jvmtiTimerInfo *info_ptr) 1712 { return p->GetTimerInfo (this, info_ptr); } 1713 GetTime(jlong * nanos_ptr)1714 jvmtiError GetTime (jlong *nanos_ptr) 1715 {return p->GetTime (this, nanos_ptr); } 1716 GetPotentialCapabilities(jvmtiCapabilities * capabilities_ptr)1717 jvmtiError GetPotentialCapabilities (jvmtiCapabilities *capabilities_ptr) 1718 { return p->GetPotentialCapabilities (this, capabilities_ptr); } 1719 AddCapabilities(const jvmtiCapabilities * capabilities_ptr)1720 jvmtiError AddCapabilities (const jvmtiCapabilities *capabilities_ptr) 1721 { return p->AddCapabilities (this, capabilities_ptr); } 1722 RelinquishCapabilities(const jvmtiCapabilities * capabilities_ptr)1723 jvmtiError RelinquishCapabilities (const jvmtiCapabilities *capabilities_ptr) 1724 { return p->RelinquishCapabilities (this, capabilities_ptr); } 1725 GetAvailableProcessors(jint * processor_count_ptr)1726 jvmtiError GetAvailableProcessors (jint *processor_count_ptr) 1727 { return p->GetAvailableProcessors (this, processor_count_ptr); } 1728 GetEnvironmentLocalStorage(void ** data_ptr)1729 jvmtiError GetEnvironmentLocalStorage (void **data_ptr) 1730 { return p->GetEnvironmentLocalStorage (this, data_ptr); } 1731 SetEnvironmentLocalStorage(const void * data)1732 jvmtiError SetEnvironmentLocalStorage (const void *data) 1733 { return p->SetEnvironmentLocalStorage (this, data); } 1734 AddToBootstrapClassLoaderSearch(const char * segment)1735 jvmtiError AddToBootstrapClassLoaderSearch (const char *segment) 1736 { return p->AddToBootstrapClassLoaderSearch (this, segment); } 1737 SetVerboseFlag(jvmtiVerboseFlag flag,jboolean value)1738 jvmtiError SetVerboseFlag (jvmtiVerboseFlag flag, jboolean value) 1739 { return p->SetVerboseFlag (this, flag, value); } 1740 GetObjectSize(jobject object,jlong * size_ptr)1741 jvmtiError GetObjectSize (jobject object, jlong *size_ptr) 1742 { return p->GetObjectSize (this, object, size_ptr); } 1743 }; 1744 #endif /* __cplusplus */ 1745 1746 /* 1747 * Miscellaneous flags, constants, etc 1748 */ 1749 1750 /* Class status flags */ 1751 #define JVMTI_CLASS_STATUS_VERIFIED 1 1752 #define JVMTI_CLASS_STATUS_PREPARED 2 1753 #define JVMTI_CLASS_STATUS_INITIALIZED 4 1754 #define JVMTI_CLASS_STATUS_ERROR 8 1755 #define JVMTI_CLASS_STATUS_ARRAY 16 1756 #define JVMTI_CLASS_STATUS_PRIMITIVE 32 1757 1758 /* Thread state flags */ 1759 #define JVMTI_THREAD_STATE_ALIVE 0x0001 1760 #define JVMTI_THREAD_STATE_TERMINATED 0x0002 1761 #define JVMTI_THREAD_STATE_RUNNABLE 0x0004 1762 #define JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER 0x0400 1763 #define JVMTI_THREAD_STATE_WAITING 0x0080 1764 #define JVMTI_THREAD_STATE_WAITING_INDEFINITELY 0x0010 1765 #define JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT 0x0020 1766 #define JVMTI_THREAD_STATE_SLEEPING 0x0040 1767 #define JVMTI_THREAD_STATE_IN_OBJECT_WAIT 0x0100 1768 #define JVMTI_THREAD_STATE_PARKED 0x0200 1769 #define JVMTI_THREAD_STATE_SUSPENDED 0x100000 1770 #define JVMTI_THREAD_STATE_INTERRUPTED 0x200000 1771 #define JVMTI_THREAD_STATE_IN_NATIVE 0x400000 1772 #define JVMTI_THREAD_STATE_VENDOR_1 0x10000000 1773 #define JVMTI_THREAD_STATE_VENDOR_2 0x20000000 1774 #define JVMTI_THREAD_STATE_VENDOR_3 0x40000000 1775 1776 /* java.lang.Thread.State conversion masks */ 1777 #define JVMTI_JAVA_LANG_THREAD_STATE_MASK \ 1778 (JVMTI_THREAD_STATE_TERMINATED \ 1779 | JVMTI_THREAD_STATE_ALIVE \ 1780 | JVMTI_THREAD_STATE_RUNNABLE \ 1781 | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER \ 1782 | JVMTI_THREAD_STATE_WAITING \ 1783 | JVMTI_THREAD_STATE_WAITING_INDEFINITELY \ 1784 | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) 1785 #define JVMTI_JAVA_LANG_THREAD_STATE_NEW 0 1786 #define JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED JVMTI_THREAD_STATE_TERMINATED 1787 #define JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE \ 1788 (JVMTI_THREAD_STATE_ALIVE \ 1789 | JVMTI_THREAD_STATE_RUNNABLE) 1790 #define JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED \ 1791 (JVMTI_THREAD_STATE_ALIVE \ 1792 | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) 1793 #define JVMTI_JAVA_LANG_THREAD_STATE_WAITING \ 1794 (JVMTI_THREAD_STATE_ALIVE \ 1795 | JVMTI_THREAD_STATE_WAITING \ 1796 | JVMTI_THREAD_STATE_WAITING_INDEFINITELY) 1797 #define JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING \ 1798 (JVMTI_THREAD_STATE_ALIVE \ 1799 | JVMTI_THREAD_STATE_WAITING \ 1800 | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) 1801 1802 /* Thread priorities */ 1803 #define JVMTI_THREAD_MIN_PRIORITY 1 1804 #define JVMTI_THREAD_NORM_PRIORITY 5 1805 #define JVMTI_THREAD_MAX_PRIORITY 10 1806 1807 /* Keep c-font-lock-extra-types in order: JNI followed by JVMTI, 1808 all in alphabetical order */ 1809 /* Local Variables: */ 1810 /* c-font-lock-extra-types: ("\\sw+_t" 1811 "JNIEnv" "JNINativeMethod" "JavaVM" "JavaVMOption" "jarray" 1812 "jboolean" "jbooleanArray" "jbyte" "jbyteArray" "jchar" "jcharArray" 1813 "jclass" "jdouble" "jdoubleArray" "jfieldID" "jfloat" "jfloatArray" 1814 "jint" "jintArray" "jlong" "jlongArray" "jmethodID" "jobject" "jstring" "jthrowable" 1815 "jvalue" "jweak" 1816 "jvmtiEnv" "jvmtiError" 1817 "jthread" "jthreadGroup" "jlocation" "jrawMonitorID") */ 1818 /* End: */ 1819 #endif /* !_CLASSPATH_JVMTI_H */ 1820