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