annotate src/share/javavm/export/jvmti.h @ 4338:9b8c96f96a0f

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