00001 #ifdef USE_PRAGMA_IDENT_HDR
00002 #pragma ident "@(#)jvmtiLib.xsl 1.38 06/08/02 23:22:31 JVM"
00003 #endif
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef _JAVA_JVMTI_H_
00015 #define _JAVA_JVMTI_H_
00016
00017 #include "jni.h"
00018
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022
00023 enum {
00024 JVMTI_VERSION_1 = 0x30010000,
00025 JVMTI_VERSION_1_0 = 0x30010000,
00026 JVMTI_VERSION_1_1 = 0x30010100,
00027
00028 JVMTI_VERSION = 0x30000000 + (1 * 0x10000) + (1 * 0x100) + 102
00029 };
00030
00031 JNIEXPORT jint JNICALL
00032 Agent_OnLoad(JavaVM *vm, char *options, void *reserved);
00033
00034 JNIEXPORT jint JNICALL
00035 Agent_OnAttach(JavaVM* vm, char* options, void* reserved);
00036
00037 JNIEXPORT void JNICALL
00038 Agent_OnUnload(JavaVM *vm);
00039
00040
00041
00042 struct _jvmtiEnv;
00043
00044 struct jvmtiInterface_1_;
00045
00046 #ifdef __cplusplus
00047 typedef _jvmtiEnv jvmtiEnv;
00048 #else
00049 typedef const struct jvmtiInterface_1_ *jvmtiEnv;
00050 #endif
00051
00052
00053
00054 typedef jobject jthread;
00055 typedef jobject jthreadGroup;
00056 typedef jlong jlocation;
00057 struct _jrawMonitorID;
00058 typedef struct _jrawMonitorID *jrawMonitorID;
00059 typedef struct JNINativeInterface_ jniNativeInterface;
00060
00061
00062
00063
00064
00065
00066 enum {
00067 JVMTI_THREAD_STATE_ALIVE = 0x0001,
00068 JVMTI_THREAD_STATE_TERMINATED = 0x0002,
00069 JVMTI_THREAD_STATE_RUNNABLE = 0x0004,
00070 JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400,
00071 JVMTI_THREAD_STATE_WAITING = 0x0080,
00072 JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010,
00073 JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020,
00074 JVMTI_THREAD_STATE_SLEEPING = 0x0040,
00075 JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100,
00076 JVMTI_THREAD_STATE_PARKED = 0x0200,
00077 JVMTI_THREAD_STATE_SUSPENDED = 0x100000,
00078 JVMTI_THREAD_STATE_INTERRUPTED = 0x200000,
00079 JVMTI_THREAD_STATE_IN_NATIVE = 0x400000,
00080 JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000,
00081 JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000,
00082 JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000
00083 };
00084
00085
00086
00087 enum {
00088 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,
00089 JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0,
00090 JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED,
00091 JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE,
00092 JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER,
00093 JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY,
00094 JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT
00095 };
00096
00097
00098
00099 enum {
00100 JVMTI_THREAD_MIN_PRIORITY = 1,
00101 JVMTI_THREAD_NORM_PRIORITY = 5,
00102 JVMTI_THREAD_MAX_PRIORITY = 10
00103 };
00104
00105
00106
00107 enum {
00108 JVMTI_HEAP_FILTER_TAGGED = 0x4,
00109 JVMTI_HEAP_FILTER_UNTAGGED = 0x8,
00110 JVMTI_HEAP_FILTER_CLASS_TAGGED = 0x10,
00111 JVMTI_HEAP_FILTER_CLASS_UNTAGGED = 0x20
00112 };
00113
00114
00115
00116 enum {
00117 JVMTI_VISIT_OBJECTS = 0x100,
00118 JVMTI_VISIT_ABORT = 0x8000
00119 };
00120
00121
00122
00123 typedef enum {
00124 JVMTI_HEAP_REFERENCE_CLASS = 1,
00125 JVMTI_HEAP_REFERENCE_FIELD = 2,
00126 JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT = 3,
00127 JVMTI_HEAP_REFERENCE_CLASS_LOADER = 4,
00128 JVMTI_HEAP_REFERENCE_SIGNERS = 5,
00129 JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN = 6,
00130 JVMTI_HEAP_REFERENCE_INTERFACE = 7,
00131 JVMTI_HEAP_REFERENCE_STATIC_FIELD = 8,
00132 JVMTI_HEAP_REFERENCE_CONSTANT_POOL = 9,
00133 JVMTI_HEAP_REFERENCE_SUPERCLASS = 10,
00134 JVMTI_HEAP_REFERENCE_JNI_GLOBAL = 21,
00135 JVMTI_HEAP_REFERENCE_SYSTEM_CLASS = 22,
00136 JVMTI_HEAP_REFERENCE_MONITOR = 23,
00137 JVMTI_HEAP_REFERENCE_STACK_LOCAL = 24,
00138 JVMTI_HEAP_REFERENCE_JNI_LOCAL = 25,
00139 JVMTI_HEAP_REFERENCE_THREAD = 26,
00140 JVMTI_HEAP_REFERENCE_OTHER = 27
00141 } jvmtiHeapReferenceKind;
00142
00143
00144
00145 typedef enum {
00146 JVMTI_PRIMITIVE_TYPE_BOOLEAN = 90,
00147 JVMTI_PRIMITIVE_TYPE_BYTE = 66,
00148 JVMTI_PRIMITIVE_TYPE_CHAR = 67,
00149 JVMTI_PRIMITIVE_TYPE_SHORT = 83,
00150 JVMTI_PRIMITIVE_TYPE_INT = 73,
00151 JVMTI_PRIMITIVE_TYPE_LONG = 74,
00152 JVMTI_PRIMITIVE_TYPE_FLOAT = 70,
00153 JVMTI_PRIMITIVE_TYPE_DOUBLE = 68
00154 } jvmtiPrimitiveType;
00155
00156
00157
00158 typedef enum {
00159 JVMTI_HEAP_OBJECT_TAGGED = 1,
00160 JVMTI_HEAP_OBJECT_UNTAGGED = 2,
00161 JVMTI_HEAP_OBJECT_EITHER = 3
00162 } jvmtiHeapObjectFilter;
00163
00164
00165
00166 typedef enum {
00167 JVMTI_HEAP_ROOT_JNI_GLOBAL = 1,
00168 JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2,
00169 JVMTI_HEAP_ROOT_MONITOR = 3,
00170 JVMTI_HEAP_ROOT_STACK_LOCAL = 4,
00171 JVMTI_HEAP_ROOT_JNI_LOCAL = 5,
00172 JVMTI_HEAP_ROOT_THREAD = 6,
00173 JVMTI_HEAP_ROOT_OTHER = 7
00174 } jvmtiHeapRootKind;
00175
00176
00177
00178 typedef enum {
00179 JVMTI_REFERENCE_CLASS = 1,
00180 JVMTI_REFERENCE_FIELD = 2,
00181 JVMTI_REFERENCE_ARRAY_ELEMENT = 3,
00182 JVMTI_REFERENCE_CLASS_LOADER = 4,
00183 JVMTI_REFERENCE_SIGNERS = 5,
00184 JVMTI_REFERENCE_PROTECTION_DOMAIN = 6,
00185 JVMTI_REFERENCE_INTERFACE = 7,
00186 JVMTI_REFERENCE_STATIC_FIELD = 8,
00187 JVMTI_REFERENCE_CONSTANT_POOL = 9
00188 } jvmtiObjectReferenceKind;
00189
00190
00191
00192 typedef enum {
00193 JVMTI_ITERATION_CONTINUE = 1,
00194 JVMTI_ITERATION_IGNORE = 2,
00195 JVMTI_ITERATION_ABORT = 0
00196 } jvmtiIterationControl;
00197
00198
00199
00200 enum {
00201 JVMTI_CLASS_STATUS_VERIFIED = 1,
00202 JVMTI_CLASS_STATUS_PREPARED = 2,
00203 JVMTI_CLASS_STATUS_INITIALIZED = 4,
00204 JVMTI_CLASS_STATUS_ERROR = 8,
00205 JVMTI_CLASS_STATUS_ARRAY = 16,
00206 JVMTI_CLASS_STATUS_PRIMITIVE = 32
00207 };
00208
00209
00210
00211 typedef enum {
00212 JVMTI_ENABLE = 1,
00213 JVMTI_DISABLE = 0
00214 } jvmtiEventMode;
00215
00216
00217
00218 typedef enum {
00219 JVMTI_TYPE_JBYTE = 101,
00220 JVMTI_TYPE_JCHAR = 102,
00221 JVMTI_TYPE_JSHORT = 103,
00222 JVMTI_TYPE_JINT = 104,
00223 JVMTI_TYPE_JLONG = 105,
00224 JVMTI_TYPE_JFLOAT = 106,
00225 JVMTI_TYPE_JDOUBLE = 107,
00226 JVMTI_TYPE_JBOOLEAN = 108,
00227 JVMTI_TYPE_JOBJECT = 109,
00228 JVMTI_TYPE_JTHREAD = 110,
00229 JVMTI_TYPE_JCLASS = 111,
00230 JVMTI_TYPE_JVALUE = 112,
00231 JVMTI_TYPE_JFIELDID = 113,
00232 JVMTI_TYPE_JMETHODID = 114,
00233 JVMTI_TYPE_CCHAR = 115,
00234 JVMTI_TYPE_CVOID = 116,
00235 JVMTI_TYPE_JNIENV = 117
00236 } jvmtiParamTypes;
00237
00238
00239
00240 typedef enum {
00241 JVMTI_KIND_IN = 91,
00242 JVMTI_KIND_IN_PTR = 92,
00243 JVMTI_KIND_IN_BUF = 93,
00244 JVMTI_KIND_ALLOC_BUF = 94,
00245 JVMTI_KIND_ALLOC_ALLOC_BUF = 95,
00246 JVMTI_KIND_OUT = 96,
00247 JVMTI_KIND_OUT_BUF = 97
00248 } jvmtiParamKind;
00249
00250
00251
00252 typedef enum {
00253 JVMTI_TIMER_USER_CPU = 30,
00254 JVMTI_TIMER_TOTAL_CPU = 31,
00255 JVMTI_TIMER_ELAPSED = 32
00256 } jvmtiTimerKind;
00257
00258
00259
00260 typedef enum {
00261 JVMTI_PHASE_ONLOAD = 1,
00262 JVMTI_PHASE_PRIMORDIAL = 2,
00263 JVMTI_PHASE_START = 6,
00264 JVMTI_PHASE_LIVE = 4,
00265 JVMTI_PHASE_DEAD = 8
00266 } jvmtiPhase;
00267
00268
00269
00270 enum {
00271 JVMTI_VERSION_INTERFACE_JNI = 0x00000000,
00272 JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000
00273 };
00274
00275
00276
00277 enum {
00278 JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000,
00279 JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000,
00280 JVMTI_VERSION_MASK_MINOR = 0x0000FF00,
00281 JVMTI_VERSION_MASK_MICRO = 0x000000FF
00282 };
00283
00284
00285
00286 enum {
00287 JVMTI_VERSION_SHIFT_MAJOR = 16,
00288 JVMTI_VERSION_SHIFT_MINOR = 8,
00289 JVMTI_VERSION_SHIFT_MICRO = 0
00290 };
00291
00292
00293
00294 typedef enum {
00295 JVMTI_VERBOSE_OTHER = 0,
00296 JVMTI_VERBOSE_GC = 1,
00297 JVMTI_VERBOSE_CLASS = 2,
00298 JVMTI_VERBOSE_JNI = 4
00299 } jvmtiVerboseFlag;
00300
00301
00302
00303 typedef enum {
00304 JVMTI_JLOCATION_JVMBCI = 1,
00305 JVMTI_JLOCATION_MACHINEPC = 2,
00306 JVMTI_JLOCATION_OTHER = 0
00307 } jvmtiJlocationFormat;
00308
00309
00310
00311 enum {
00312 JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR = 0x0001,
00313 JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP = 0x0002,
00314 JVMTI_RESOURCE_EXHAUSTED_THREADS = 0x0004
00315 };
00316
00317
00318
00319 typedef enum {
00320 JVMTI_ERROR_NONE = 0,
00321 JVMTI_ERROR_INVALID_THREAD = 10,
00322 JVMTI_ERROR_INVALID_THREAD_GROUP = 11,
00323 JVMTI_ERROR_INVALID_PRIORITY = 12,
00324 JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,
00325 JVMTI_ERROR_THREAD_SUSPENDED = 14,
00326 JVMTI_ERROR_THREAD_NOT_ALIVE = 15,
00327 JVMTI_ERROR_INVALID_OBJECT = 20,
00328 JVMTI_ERROR_INVALID_CLASS = 21,
00329 JVMTI_ERROR_CLASS_NOT_PREPARED = 22,
00330 JVMTI_ERROR_INVALID_METHODID = 23,
00331 JVMTI_ERROR_INVALID_LOCATION = 24,
00332 JVMTI_ERROR_INVALID_FIELDID = 25,
00333 JVMTI_ERROR_NO_MORE_FRAMES = 31,
00334 JVMTI_ERROR_OPAQUE_FRAME = 32,
00335 JVMTI_ERROR_TYPE_MISMATCH = 34,
00336 JVMTI_ERROR_INVALID_SLOT = 35,
00337 JVMTI_ERROR_DUPLICATE = 40,
00338 JVMTI_ERROR_NOT_FOUND = 41,
00339 JVMTI_ERROR_INVALID_MONITOR = 50,
00340 JVMTI_ERROR_NOT_MONITOR_OWNER = 51,
00341 JVMTI_ERROR_INTERRUPT = 52,
00342 JVMTI_ERROR_INVALID_CLASS_FORMAT = 60,
00343 JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61,
00344 JVMTI_ERROR_FAILS_VERIFICATION = 62,
00345 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63,
00346 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64,
00347 JVMTI_ERROR_INVALID_TYPESTATE = 65,
00348 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66,
00349 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67,
00350 JVMTI_ERROR_UNSUPPORTED_VERSION = 68,
00351 JVMTI_ERROR_NAMES_DONT_MATCH = 69,
00352 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,
00353 JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,
00354 JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,
00355 JVMTI_ERROR_NOT_AVAILABLE = 98,
00356 JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,
00357 JVMTI_ERROR_NULL_POINTER = 100,
00358 JVMTI_ERROR_ABSENT_INFORMATION = 101,
00359 JVMTI_ERROR_INVALID_EVENT_TYPE = 102,
00360 JVMTI_ERROR_ILLEGAL_ARGUMENT = 103,
00361 JVMTI_ERROR_NATIVE_METHOD = 104,
00362 JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED = 106,
00363 JVMTI_ERROR_OUT_OF_MEMORY = 110,
00364 JVMTI_ERROR_ACCESS_DENIED = 111,
00365 JVMTI_ERROR_WRONG_PHASE = 112,
00366 JVMTI_ERROR_INTERNAL = 113,
00367 JVMTI_ERROR_UNATTACHED_THREAD = 115,
00368 JVMTI_ERROR_INVALID_ENVIRONMENT = 116,
00369 JVMTI_ERROR_MAX = 116
00370 } jvmtiError;
00371
00372
00373
00374 typedef enum {
00375 JVMTI_MIN_EVENT_TYPE_VAL = 50,
00376 JVMTI_EVENT_VM_INIT = 50,
00377 JVMTI_EVENT_VM_DEATH = 51,
00378 JVMTI_EVENT_THREAD_START = 52,
00379 JVMTI_EVENT_THREAD_END = 53,
00380 JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54,
00381 JVMTI_EVENT_CLASS_LOAD = 55,
00382 JVMTI_EVENT_CLASS_PREPARE = 56,
00383 JVMTI_EVENT_VM_START = 57,
00384 JVMTI_EVENT_EXCEPTION = 58,
00385 JVMTI_EVENT_EXCEPTION_CATCH = 59,
00386 JVMTI_EVENT_SINGLE_STEP = 60,
00387 JVMTI_EVENT_FRAME_POP = 61,
00388 JVMTI_EVENT_BREAKPOINT = 62,
00389 JVMTI_EVENT_FIELD_ACCESS = 63,
00390 JVMTI_EVENT_FIELD_MODIFICATION = 64,
00391 JVMTI_EVENT_METHOD_ENTRY = 65,
00392 JVMTI_EVENT_METHOD_EXIT = 66,
00393 JVMTI_EVENT_NATIVE_METHOD_BIND = 67,
00394 JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,
00395 JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,
00396 JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,
00397 JVMTI_EVENT_DATA_DUMP_REQUEST = 71,
00398 JVMTI_EVENT_MONITOR_WAIT = 73,
00399 JVMTI_EVENT_MONITOR_WAITED = 74,
00400 JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,
00401 JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,
00402 JVMTI_EVENT_RESOURCE_EXHAUSTED = 80,
00403 JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,
00404 JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,
00405 JVMTI_EVENT_OBJECT_FREE = 83,
00406 JVMTI_EVENT_VM_OBJECT_ALLOC = 84,
00407 JVMTI_MAX_EVENT_TYPE_VAL = 84
00408 } jvmtiEvent;
00409
00410
00411
00412 struct _jvmtiThreadInfo;
00413 typedef struct _jvmtiThreadInfo jvmtiThreadInfo;
00414 struct _jvmtiMonitorStackDepthInfo;
00415 typedef struct _jvmtiMonitorStackDepthInfo jvmtiMonitorStackDepthInfo;
00416 struct _jvmtiThreadGroupInfo;
00417 typedef struct _jvmtiThreadGroupInfo jvmtiThreadGroupInfo;
00418 struct _jvmtiFrameInfo;
00419 typedef struct _jvmtiFrameInfo jvmtiFrameInfo;
00420 struct _jvmtiStackInfo;
00421 typedef struct _jvmtiStackInfo jvmtiStackInfo;
00422 struct _jvmtiHeapReferenceInfoField;
00423 typedef struct _jvmtiHeapReferenceInfoField jvmtiHeapReferenceInfoField;
00424 struct _jvmtiHeapReferenceInfoArray;
00425 typedef struct _jvmtiHeapReferenceInfoArray jvmtiHeapReferenceInfoArray;
00426 struct _jvmtiHeapReferenceInfoConstantPool;
00427 typedef struct _jvmtiHeapReferenceInfoConstantPool jvmtiHeapReferenceInfoConstantPool;
00428 struct _jvmtiHeapReferenceInfoStackLocal;
00429 typedef struct _jvmtiHeapReferenceInfoStackLocal jvmtiHeapReferenceInfoStackLocal;
00430 struct _jvmtiHeapReferenceInfoJniLocal;
00431 typedef struct _jvmtiHeapReferenceInfoJniLocal jvmtiHeapReferenceInfoJniLocal;
00432 struct _jvmtiHeapReferenceInfoReserved;
00433 typedef struct _jvmtiHeapReferenceInfoReserved jvmtiHeapReferenceInfoReserved;
00434 union _jvmtiHeapReferenceInfo;
00435 typedef union _jvmtiHeapReferenceInfo jvmtiHeapReferenceInfo;
00436 struct _jvmtiHeapCallbacks;
00437 typedef struct _jvmtiHeapCallbacks jvmtiHeapCallbacks;
00438 struct _jvmtiClassDefinition;
00439 typedef struct _jvmtiClassDefinition jvmtiClassDefinition;
00440 struct _jvmtiMonitorUsage;
00441 typedef struct _jvmtiMonitorUsage jvmtiMonitorUsage;
00442 struct _jvmtiLineNumberEntry;
00443 typedef struct _jvmtiLineNumberEntry jvmtiLineNumberEntry;
00444 struct _jvmtiLocalVariableEntry;
00445 typedef struct _jvmtiLocalVariableEntry jvmtiLocalVariableEntry;
00446 struct _jvmtiParamInfo;
00447 typedef struct _jvmtiParamInfo jvmtiParamInfo;
00448 struct _jvmtiExtensionFunctionInfo;
00449 typedef struct _jvmtiExtensionFunctionInfo jvmtiExtensionFunctionInfo;
00450 struct _jvmtiExtensionEventInfo;
00451 typedef struct _jvmtiExtensionEventInfo jvmtiExtensionEventInfo;
00452 struct _jvmtiTimerInfo;
00453 typedef struct _jvmtiTimerInfo jvmtiTimerInfo;
00454 struct _jvmtiAddrLocationMap;
00455 typedef struct _jvmtiAddrLocationMap jvmtiAddrLocationMap;
00456
00457
00458
00459 typedef void (JNICALL *jvmtiStartFunction)
00460 (jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg);
00461
00462 typedef jint (JNICALL *jvmtiHeapIterationCallback)
00463 (jlong class_tag, jlong size, jlong* tag_ptr, jint length, void* user_data);
00464
00465 typedef jint (JNICALL *jvmtiHeapReferenceCallback)
00466 (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);
00467
00468 typedef jint (JNICALL *jvmtiPrimitiveFieldCallback)
00469 (jvmtiHeapReferenceKind kind, const jvmtiHeapReferenceInfo* info, jlong object_class_tag, jlong* object_tag_ptr, jvalue value, jvmtiPrimitiveType value_type, void* user_data);
00470
00471 typedef jint (JNICALL *jvmtiArrayPrimitiveValueCallback)
00472 (jlong class_tag, jlong size, jlong* tag_ptr, jint element_count, jvmtiPrimitiveType element_type, const void* elements, void* user_data);
00473
00474 typedef jint (JNICALL *jvmtiStringPrimitiveValueCallback)
00475 (jlong class_tag, jlong size, jlong* tag_ptr, const jchar* value, jint value_length, void* user_data);
00476
00477 typedef jint (JNICALL *jvmtiReservedCallback)
00478 ();
00479
00480 typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback)
00481 (jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);
00482
00483 typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback)
00484 (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);
00485
00486 typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback)
00487 (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_data);
00488
00489 typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback)
00490 (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data);
00491
00492 typedef jvmtiError (JNICALL *jvmtiExtensionFunction)
00493 (jvmtiEnv* jvmti_env, ...);
00494
00495 typedef void (JNICALL *jvmtiExtensionEvent)
00496 (jvmtiEnv* jvmti_env, ...);
00497
00498
00499
00500 struct _jvmtiThreadInfo {
00501 char* name;
00502 jint priority;
00503 jboolean is_daemon;
00504 jthreadGroup thread_group;
00505 jobject context_class_loader;
00506 };
00507 struct _jvmtiMonitorStackDepthInfo {
00508 jobject monitor;
00509 jint stack_depth;
00510 };
00511 struct _jvmtiThreadGroupInfo {
00512 jthreadGroup parent;
00513 char* name;
00514 jint max_priority;
00515 jboolean is_daemon;
00516 };
00517 struct _jvmtiFrameInfo {
00518 jmethodID method;
00519 jlocation location;
00520 };
00521 struct _jvmtiStackInfo {
00522 jthread thread;
00523 jint state;
00524 jvmtiFrameInfo* frame_buffer;
00525 jint frame_count;
00526 };
00527 struct _jvmtiHeapReferenceInfoField {
00528 jint index;
00529 };
00530 struct _jvmtiHeapReferenceInfoArray {
00531 jint index;
00532 };
00533 struct _jvmtiHeapReferenceInfoConstantPool {
00534 jint index;
00535 };
00536 struct _jvmtiHeapReferenceInfoStackLocal {
00537 jlong thread_tag;
00538 jlong thread_id;
00539 jint depth;
00540 jmethodID method;
00541 jlocation location;
00542 jint slot;
00543 };
00544 struct _jvmtiHeapReferenceInfoJniLocal {
00545 jlong thread_tag;
00546 jlong thread_id;
00547 jint depth;
00548 jmethodID method;
00549 };
00550 struct _jvmtiHeapReferenceInfoReserved {
00551 jlong reserved1;
00552 jlong reserved2;
00553 jlong reserved3;
00554 jlong reserved4;
00555 jlong reserved5;
00556 jlong reserved6;
00557 jlong reserved7;
00558 jlong reserved8;
00559 };
00560 union _jvmtiHeapReferenceInfo {
00561 jvmtiHeapReferenceInfoField field;
00562 jvmtiHeapReferenceInfoArray array;
00563 jvmtiHeapReferenceInfoConstantPool constant_pool;
00564 jvmtiHeapReferenceInfoStackLocal stack_local;
00565 jvmtiHeapReferenceInfoJniLocal jni_local;
00566 jvmtiHeapReferenceInfoReserved other;
00567 };
00568 struct _jvmtiHeapCallbacks {
00569 jvmtiHeapIterationCallback heap_iteration_callback;
00570 jvmtiHeapReferenceCallback heap_reference_callback;
00571 jvmtiPrimitiveFieldCallback primitive_field_callback;
00572 jvmtiArrayPrimitiveValueCallback array_primitive_value_callback;
00573 jvmtiStringPrimitiveValueCallback string_primitive_value_callback;
00574 jvmtiReservedCallback reserved5;
00575 jvmtiReservedCallback reserved6;
00576 jvmtiReservedCallback reserved7;
00577 jvmtiReservedCallback reserved8;
00578 jvmtiReservedCallback reserved9;
00579 jvmtiReservedCallback reserved10;
00580 jvmtiReservedCallback reserved11;
00581 jvmtiReservedCallback reserved12;
00582 jvmtiReservedCallback reserved13;
00583 jvmtiReservedCallback reserved14;
00584 jvmtiReservedCallback reserved15;
00585 };
00586 struct _jvmtiClassDefinition {
00587 jclass klass;
00588 jint class_byte_count;
00589 const unsigned char* class_bytes;
00590 };
00591 struct _jvmtiMonitorUsage {
00592 jthread owner;
00593 jint entry_count;
00594 jint waiter_count;
00595 jthread* waiters;
00596 jint notify_waiter_count;
00597 jthread* notify_waiters;
00598 };
00599 struct _jvmtiLineNumberEntry {
00600 jlocation start_location;
00601 jint line_number;
00602 };
00603 struct _jvmtiLocalVariableEntry {
00604 jlocation start_location;
00605 jint length;
00606 char* name;
00607 char* signature;
00608 char* generic_signature;
00609 jint slot;
00610 };
00611 struct _jvmtiParamInfo {
00612 char* name;
00613 jvmtiParamKind kind;
00614 jvmtiParamTypes base_type;
00615 jboolean null_ok;
00616 };
00617 struct _jvmtiExtensionFunctionInfo {
00618 jvmtiExtensionFunction func;
00619 char* id;
00620 char* short_description;
00621 jint param_count;
00622 jvmtiParamInfo* params;
00623 jint error_count;
00624 jvmtiError* errors;
00625 };
00626 struct _jvmtiExtensionEventInfo {
00627 jint extension_event_index;
00628 char* id;
00629 char* short_description;
00630 jint param_count;
00631 jvmtiParamInfo* params;
00632 };
00633 struct _jvmtiTimerInfo {
00634 jlong max_value;
00635 jboolean may_skip_forward;
00636 jboolean may_skip_backward;
00637 jvmtiTimerKind kind;
00638 jlong reserved1;
00639 jlong reserved2;
00640 };
00641 struct _jvmtiAddrLocationMap {
00642 const void* start_address;
00643 jlocation location;
00644 };
00645
00646 typedef struct {
00647 unsigned int can_tag_objects : 1;
00648 unsigned int can_generate_field_modification_events : 1;
00649 unsigned int can_generate_field_access_events : 1;
00650 unsigned int can_get_bytecodes : 1;
00651 unsigned int can_get_synthetic_attribute : 1;
00652 unsigned int can_get_owned_monitor_info : 1;
00653 unsigned int can_get_current_contended_monitor : 1;
00654 unsigned int can_get_monitor_info : 1;
00655 unsigned int can_pop_frame : 1;
00656 unsigned int can_redefine_classes : 1;
00657 unsigned int can_signal_thread : 1;
00658 unsigned int can_get_source_file_name : 1;
00659 unsigned int can_get_line_numbers : 1;
00660 unsigned int can_get_source_debug_extension : 1;
00661 unsigned int can_access_local_variables : 1;
00662 unsigned int can_maintain_original_method_order : 1;
00663 unsigned int can_generate_single_step_events : 1;
00664 unsigned int can_generate_exception_events : 1;
00665 unsigned int can_generate_frame_pop_events : 1;
00666 unsigned int can_generate_breakpoint_events : 1;
00667 unsigned int can_suspend : 1;
00668 unsigned int can_redefine_any_class : 1;
00669 unsigned int can_get_current_thread_cpu_time : 1;
00670 unsigned int can_get_thread_cpu_time : 1;
00671 unsigned int can_generate_method_entry_events : 1;
00672 unsigned int can_generate_method_exit_events : 1;
00673 unsigned int can_generate_all_class_hook_events : 1;
00674 unsigned int can_generate_compiled_method_load_events : 1;
00675 unsigned int can_generate_monitor_events : 1;
00676 unsigned int can_generate_vm_object_alloc_events : 1;
00677 unsigned int can_generate_native_method_bind_events : 1;
00678 unsigned int can_generate_garbage_collection_events : 1;
00679 unsigned int can_generate_object_free_events : 1;
00680 unsigned int can_force_early_return : 1;
00681 unsigned int can_get_owned_monitor_stack_depth_info : 1;
00682 unsigned int can_get_constant_pool : 1;
00683 unsigned int can_set_native_method_prefix : 1;
00684 unsigned int can_retransform_classes : 1;
00685 unsigned int can_retransform_any_class : 1;
00686 unsigned int can_generate_resource_exhaustion_heap_events : 1;
00687 unsigned int can_generate_resource_exhaustion_threads_events : 1;
00688 unsigned int : 7;
00689 unsigned int : 16;
00690 unsigned int : 16;
00691 unsigned int : 16;
00692 unsigned int : 16;
00693 unsigned int : 16;
00694 } jvmtiCapabilities;
00695
00696
00697
00698
00699 typedef void (JNICALL *jvmtiEventReserved)(void);
00700
00701
00702 typedef void (JNICALL *jvmtiEventBreakpoint)
00703 (jvmtiEnv *jvmti_env,
00704 JNIEnv* jni_env,
00705 jthread thread,
00706 jmethodID method,
00707 jlocation location);
00708
00709 typedef void (JNICALL *jvmtiEventClassFileLoadHook)
00710 (jvmtiEnv *jvmti_env,
00711 JNIEnv* jni_env,
00712 jclass class_being_redefined,
00713 jobject loader,
00714 const char* name,
00715 jobject protection_domain,
00716 jint class_data_len,
00717 const unsigned char* class_data,
00718 jint* new_class_data_len,
00719 unsigned char** new_class_data);
00720
00721 typedef void (JNICALL *jvmtiEventClassLoad)
00722 (jvmtiEnv *jvmti_env,
00723 JNIEnv* jni_env,
00724 jthread thread,
00725 jclass klass);
00726
00727 typedef void (JNICALL *jvmtiEventClassPrepare)
00728 (jvmtiEnv *jvmti_env,
00729 JNIEnv* jni_env,
00730 jthread thread,
00731 jclass klass);
00732
00733 typedef void (JNICALL *jvmtiEventCompiledMethodLoad)
00734 (jvmtiEnv *jvmti_env,
00735 jmethodID method,
00736 jint code_size,
00737 const void* code_addr,
00738 jint map_length,
00739 const jvmtiAddrLocationMap* map,
00740 const void* compile_info);
00741
00742 typedef void (JNICALL *jvmtiEventCompiledMethodUnload)
00743 (jvmtiEnv *jvmti_env,
00744 jmethodID method,
00745 const void* code_addr);
00746
00747 typedef void (JNICALL *jvmtiEventDataDumpRequest)
00748 (jvmtiEnv *jvmti_env);
00749
00750 typedef void (JNICALL *jvmtiEventDynamicCodeGenerated)
00751 (jvmtiEnv *jvmti_env,
00752 const char* name,
00753 const void* address,
00754 jint length);
00755
00756 typedef void (JNICALL *jvmtiEventException)
00757 (jvmtiEnv *jvmti_env,
00758 JNIEnv* jni_env,
00759 jthread thread,
00760 jmethodID method,
00761 jlocation location,
00762 jobject exception,
00763 jmethodID catch_method,
00764 jlocation catch_location);
00765
00766 typedef void (JNICALL *jvmtiEventExceptionCatch)
00767 (jvmtiEnv *jvmti_env,
00768 JNIEnv* jni_env,
00769 jthread thread,
00770 jmethodID method,
00771 jlocation location,
00772 jobject exception);
00773
00774 typedef void (JNICALL *jvmtiEventFieldAccess)
00775 (jvmtiEnv *jvmti_env,
00776 JNIEnv* jni_env,
00777 jthread thread,
00778 jmethodID method,
00779 jlocation location,
00780 jclass field_klass,
00781 jobject object,
00782 jfieldID field);
00783
00784 typedef void (JNICALL *jvmtiEventFieldModification)
00785 (jvmtiEnv *jvmti_env,
00786 JNIEnv* jni_env,
00787 jthread thread,
00788 jmethodID method,
00789 jlocation location,
00790 jclass field_klass,
00791 jobject object,
00792 jfieldID field,
00793 char signature_type,
00794 jvalue new_value);
00795
00796 typedef void (JNICALL *jvmtiEventFramePop)
00797 (jvmtiEnv *jvmti_env,
00798 JNIEnv* jni_env,
00799 jthread thread,
00800 jmethodID method,
00801 jboolean was_popped_by_exception);
00802
00803 typedef void (JNICALL *jvmtiEventGarbageCollectionFinish)
00804 (jvmtiEnv *jvmti_env);
00805
00806 typedef void (JNICALL *jvmtiEventGarbageCollectionStart)
00807 (jvmtiEnv *jvmti_env);
00808
00809 typedef void (JNICALL *jvmtiEventMethodEntry)
00810 (jvmtiEnv *jvmti_env,
00811 JNIEnv* jni_env,
00812 jthread thread,
00813 jmethodID method);
00814
00815 typedef void (JNICALL *jvmtiEventMethodExit)
00816 (jvmtiEnv *jvmti_env,
00817 JNIEnv* jni_env,
00818 jthread thread,
00819 jmethodID method,
00820 jboolean was_popped_by_exception,
00821 jvalue return_value);
00822
00823 typedef void (JNICALL *jvmtiEventMonitorContendedEnter)
00824 (jvmtiEnv *jvmti_env,
00825 JNIEnv* jni_env,
00826 jthread thread,
00827 jobject object);
00828
00829 typedef void (JNICALL *jvmtiEventMonitorContendedEntered)
00830 (jvmtiEnv *jvmti_env,
00831 JNIEnv* jni_env,
00832 jthread thread,
00833 jobject object);
00834
00835 typedef void (JNICALL *jvmtiEventMonitorWait)
00836 (jvmtiEnv *jvmti_env,
00837 JNIEnv* jni_env,
00838 jthread thread,
00839 jobject object,
00840 jlong timeout);
00841
00842 typedef void (JNICALL *jvmtiEventMonitorWaited)
00843 (jvmtiEnv *jvmti_env,
00844 JNIEnv* jni_env,
00845 jthread thread,
00846 jobject object,
00847 jboolean timed_out);
00848
00849 typedef void (JNICALL *jvmtiEventNativeMethodBind)
00850 (jvmtiEnv *jvmti_env,
00851 JNIEnv* jni_env,
00852 jthread thread,
00853 jmethodID method,
00854 void* address,
00855 void** new_address_ptr);
00856
00857 typedef void (JNICALL *jvmtiEventObjectFree)
00858 (jvmtiEnv *jvmti_env,
00859 jlong tag);
00860
00861 typedef void (JNICALL *jvmtiEventResourceExhausted)
00862 (jvmtiEnv *jvmti_env,
00863 JNIEnv* jni_env,
00864 jint flags,
00865 const void* reserved,
00866 const char* description);
00867
00868 typedef void (JNICALL *jvmtiEventSingleStep)
00869 (jvmtiEnv *jvmti_env,
00870 JNIEnv* jni_env,
00871 jthread thread,
00872 jmethodID method,
00873 jlocation location);
00874
00875 typedef void (JNICALL *jvmtiEventThreadEnd)
00876 (jvmtiEnv *jvmti_env,
00877 JNIEnv* jni_env,
00878 jthread thread);
00879
00880 typedef void (JNICALL *jvmtiEventThreadStart)
00881 (jvmtiEnv *jvmti_env,
00882 JNIEnv* jni_env,
00883 jthread thread);
00884
00885 typedef void (JNICALL *jvmtiEventVMDeath)
00886 (jvmtiEnv *jvmti_env,
00887 JNIEnv* jni_env);
00888
00889 typedef void (JNICALL *jvmtiEventVMInit)
00890 (jvmtiEnv *jvmti_env,
00891 JNIEnv* jni_env,
00892 jthread thread);
00893
00894 typedef void (JNICALL *jvmtiEventVMObjectAlloc)
00895 (jvmtiEnv *jvmti_env,
00896 JNIEnv* jni_env,
00897 jthread thread,
00898 jobject object,
00899 jclass object_klass,
00900 jlong size);
00901
00902 typedef void (JNICALL *jvmtiEventVMStart)
00903 (jvmtiEnv *jvmti_env,
00904 JNIEnv* jni_env);
00905
00906
00907
00908 typedef struct {
00909
00910 jvmtiEventVMInit VMInit;
00911
00912 jvmtiEventVMDeath VMDeath;
00913
00914 jvmtiEventThreadStart ThreadStart;
00915
00916 jvmtiEventThreadEnd ThreadEnd;
00917
00918 jvmtiEventClassFileLoadHook ClassFileLoadHook;
00919
00920 jvmtiEventClassLoad ClassLoad;
00921
00922 jvmtiEventClassPrepare ClassPrepare;
00923
00924 jvmtiEventVMStart VMStart;
00925
00926 jvmtiEventException Exception;
00927
00928 jvmtiEventExceptionCatch ExceptionCatch;
00929
00930 jvmtiEventSingleStep SingleStep;
00931
00932 jvmtiEventFramePop FramePop;
00933
00934 jvmtiEventBreakpoint Breakpoint;
00935
00936 jvmtiEventFieldAccess FieldAccess;
00937
00938 jvmtiEventFieldModification FieldModification;
00939
00940 jvmtiEventMethodEntry MethodEntry;
00941
00942 jvmtiEventMethodExit MethodExit;
00943
00944 jvmtiEventNativeMethodBind NativeMethodBind;
00945
00946 jvmtiEventCompiledMethodLoad CompiledMethodLoad;
00947
00948 jvmtiEventCompiledMethodUnload CompiledMethodUnload;
00949
00950 jvmtiEventDynamicCodeGenerated DynamicCodeGenerated;
00951
00952 jvmtiEventDataDumpRequest DataDumpRequest;
00953
00954 jvmtiEventReserved reserved72;
00955
00956 jvmtiEventMonitorWait MonitorWait;
00957
00958 jvmtiEventMonitorWaited MonitorWaited;
00959
00960 jvmtiEventMonitorContendedEnter MonitorContendedEnter;
00961
00962 jvmtiEventMonitorContendedEntered MonitorContendedEntered;
00963
00964 jvmtiEventReserved reserved77;
00965
00966 jvmtiEventReserved reserved78;
00967
00968 jvmtiEventReserved reserved79;
00969
00970 jvmtiEventResourceExhausted ResourceExhausted;
00971
00972 jvmtiEventGarbageCollectionStart GarbageCollectionStart;
00973
00974 jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;
00975
00976 jvmtiEventObjectFree ObjectFree;
00977
00978 jvmtiEventVMObjectAlloc VMObjectAlloc;
00979 } jvmtiEventCallbacks;
00980
00981
00982
00983
00984 typedef struct jvmtiInterface_1_ {
00985
00986
00987 void *reserved1;
00988
00989
00990 jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env,
00991 jvmtiEventMode mode,
00992 jvmtiEvent event_type,
00993 jthread event_thread,
00994 ...);
00995
00996
00997 void *reserved3;
00998
00999
01000 jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env,
01001 jint* threads_count_ptr,
01002 jthread** threads_ptr);
01003
01004
01005 jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env,
01006 jthread thread);
01007
01008
01009 jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env,
01010 jthread thread);
01011
01012
01013 jvmtiError (JNICALL *StopThread) (jvmtiEnv* env,
01014 jthread thread,
01015 jobject exception);
01016
01017
01018 jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env,
01019 jthread thread);
01020
01021
01022 jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env,
01023 jthread thread,
01024 jvmtiThreadInfo* info_ptr);
01025
01026
01027 jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env,
01028 jthread thread,
01029 jint* owned_monitor_count_ptr,
01030 jobject** owned_monitors_ptr);
01031
01032
01033 jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env,
01034 jthread thread,
01035 jobject* monitor_ptr);
01036
01037
01038 jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env,
01039 jthread thread,
01040 jvmtiStartFunction proc,
01041 const void* arg,
01042 jint priority);
01043
01044
01045 jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env,
01046 jint* group_count_ptr,
01047 jthreadGroup** groups_ptr);
01048
01049
01050 jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env,
01051 jthreadGroup group,
01052 jvmtiThreadGroupInfo* info_ptr);
01053
01054
01055 jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv* env,
01056 jthreadGroup group,
01057 jint* thread_count_ptr,
01058 jthread** threads_ptr,
01059 jint* group_count_ptr,
01060 jthreadGroup** groups_ptr);
01061
01062
01063 jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env,
01064 jthread thread,
01065 jint* count_ptr);
01066
01067
01068 jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env,
01069 jthread thread,
01070 jint* thread_state_ptr);
01071
01072
01073 jvmtiError (JNICALL *GetCurrentThread) (jvmtiEnv* env,
01074 jthread* thread_ptr);
01075
01076
01077 jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env,
01078 jthread thread,
01079 jint depth,
01080 jmethodID* method_ptr,
01081 jlocation* location_ptr);
01082
01083
01084 jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env,
01085 jthread thread,
01086 jint depth);
01087
01088
01089 jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env,
01090 jthread thread,
01091 jint depth,
01092 jint slot,
01093 jobject* value_ptr);
01094
01095
01096 jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env,
01097 jthread thread,
01098 jint depth,
01099 jint slot,
01100 jint* value_ptr);
01101
01102
01103 jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env,
01104 jthread thread,
01105 jint depth,
01106 jint slot,
01107 jlong* value_ptr);
01108
01109
01110 jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env,
01111 jthread thread,
01112 jint depth,
01113 jint slot,
01114 jfloat* value_ptr);
01115
01116
01117 jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env,
01118 jthread thread,
01119 jint depth,
01120 jint slot,
01121 jdouble* value_ptr);
01122
01123
01124 jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env,
01125 jthread thread,
01126 jint depth,
01127 jint slot,
01128 jobject value);
01129
01130
01131 jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env,
01132 jthread thread,
01133 jint depth,
01134 jint slot,
01135 jint value);
01136
01137
01138 jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env,
01139 jthread thread,
01140 jint depth,
01141 jint slot,
01142 jlong value);
01143
01144
01145 jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv* env,
01146 jthread thread,
01147 jint depth,
01148 jint slot,
01149 jfloat value);
01150
01151
01152 jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv* env,
01153 jthread thread,
01154 jint depth,
01155 jint slot,
01156 jdouble value);
01157
01158
01159 jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv* env,
01160 const char* name,
01161 jrawMonitorID* monitor_ptr);
01162
01163
01164 jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv* env,
01165 jrawMonitorID monitor);
01166
01167
01168 jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv* env,
01169 jrawMonitorID monitor);
01170
01171
01172 jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv* env,
01173 jrawMonitorID monitor);
01174
01175
01176 jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv* env,
01177 jrawMonitorID monitor,
01178 jlong millis);
01179
01180
01181 jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv* env,
01182 jrawMonitorID monitor);
01183
01184
01185 jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv* env,
01186 jrawMonitorID monitor);
01187
01188
01189 jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv* env,
01190 jmethodID method,
01191 jlocation location);
01192
01193
01194 jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv* env,
01195 jmethodID method,
01196 jlocation location);
01197
01198
01199 void *reserved40;
01200
01201
01202 jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv* env,
01203 jclass klass,
01204 jfieldID field);
01205
01206
01207 jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv* env,
01208 jclass klass,
01209 jfieldID field);
01210
01211
01212 jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env,
01213 jclass klass,
01214 jfieldID field);
01215
01216
01217 jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env,
01218 jclass klass,
01219 jfieldID field);
01220
01221
01222 jvmtiError (JNICALL *IsModifiableClass) (jvmtiEnv* env,
01223 jclass klass,
01224 jboolean* is_modifiable_class_ptr);
01225
01226
01227 jvmtiError (JNICALL *Allocate) (jvmtiEnv* env,
01228 jlong size,
01229 unsigned char** mem_ptr);
01230
01231
01232 jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env,
01233 unsigned char* mem);
01234
01235
01236 jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv* env,
01237 jclass klass,
01238 char** signature_ptr,
01239 char** generic_ptr);
01240
01241
01242 jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv* env,
01243 jclass klass,
01244 jint* status_ptr);
01245
01246
01247 jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv* env,
01248 jclass klass,
01249 char** source_name_ptr);
01250
01251
01252 jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv* env,
01253 jclass klass,
01254 jint* modifiers_ptr);
01255
01256
01257 jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv* env,
01258 jclass klass,
01259 jint* method_count_ptr,
01260 jmethodID** methods_ptr);
01261
01262
01263 jvmtiError (JNICALL *GetClassFields) (jvmtiEnv* env,
01264 jclass klass,
01265 jint* field_count_ptr,
01266 jfieldID** fields_ptr);
01267
01268
01269 jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv* env,
01270 jclass klass,
01271 jint* interface_count_ptr,
01272 jclass** interfaces_ptr);
01273
01274
01275 jvmtiError (JNICALL *IsInterface) (jvmtiEnv* env,
01276 jclass klass,
01277 jboolean* is_interface_ptr);
01278
01279
01280 jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv* env,
01281 jclass klass,
01282 jboolean* is_array_class_ptr);
01283
01284
01285 jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv* env,
01286 jclass klass,
01287 jobject* classloader_ptr);
01288
01289
01290 jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv* env,
01291 jobject object,
01292 jint* hash_code_ptr);
01293
01294
01295 jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv* env,
01296 jobject object,
01297 jvmtiMonitorUsage* info_ptr);
01298
01299
01300 jvmtiError (JNICALL *GetFieldName) (jvmtiEnv* env,
01301 jclass klass,
01302 jfieldID field,
01303 char** name_ptr,
01304 char** signature_ptr,
01305 char** generic_ptr);
01306
01307
01308 jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv* env,
01309 jclass klass,
01310 jfieldID field,
01311 jclass* declaring_class_ptr);
01312
01313
01314 jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv* env,
01315 jclass klass,
01316 jfieldID field,
01317 jint* modifiers_ptr);
01318
01319
01320 jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv* env,
01321 jclass klass,
01322 jfieldID field,
01323 jboolean* is_synthetic_ptr);
01324
01325
01326 jvmtiError (JNICALL *GetMethodName) (jvmtiEnv* env,
01327 jmethodID method,
01328 char** name_ptr,
01329 char** signature_ptr,
01330 char** generic_ptr);
01331
01332
01333 jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv* env,
01334 jmethodID method,
01335 jclass* declaring_class_ptr);
01336
01337
01338 jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv* env,
01339 jmethodID method,
01340 jint* modifiers_ptr);
01341
01342
01343 void *reserved67;
01344
01345
01346 jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv* env,
01347 jmethodID method,
01348 jint* max_ptr);
01349
01350
01351 jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv* env,
01352 jmethodID method,
01353 jint* size_ptr);
01354
01355
01356 jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv* env,
01357 jmethodID method,
01358 jint* entry_count_ptr,
01359 jvmtiLineNumberEntry** table_ptr);
01360
01361
01362 jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv* env,
01363 jmethodID method,
01364 jlocation* start_location_ptr,
01365 jlocation* end_location_ptr);
01366
01367
01368 jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env,
01369 jmethodID method,
01370 jint* entry_count_ptr,
01371 jvmtiLocalVariableEntry** table_ptr);
01372
01373
01374 jvmtiError (JNICALL *SetNativeMethodPrefix) (jvmtiEnv* env,
01375 const char* prefix);
01376
01377
01378 jvmtiError (JNICALL *SetNativeMethodPrefixes) (jvmtiEnv* env,
01379 jint prefix_count,
01380 char** prefixes);
01381
01382
01383 jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env,
01384 jmethodID method,
01385 jint* bytecode_count_ptr,
01386 unsigned char** bytecodes_ptr);
01387
01388
01389 jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env,
01390 jmethodID method,
01391 jboolean* is_native_ptr);
01392
01393
01394 jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv* env,
01395 jmethodID method,
01396 jboolean* is_synthetic_ptr);
01397
01398
01399 jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv* env,
01400 jint* class_count_ptr,
01401 jclass** classes_ptr);
01402
01403
01404 jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env,
01405 jobject initiating_loader,
01406 jint* class_count_ptr,
01407 jclass** classes_ptr);
01408
01409
01410 jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env,
01411 jthread thread);
01412
01413
01414 jvmtiError (JNICALL *ForceEarlyReturnObject) (jvmtiEnv* env,
01415 jthread thread,
01416 jobject value);
01417
01418
01419 jvmtiError (JNICALL *ForceEarlyReturnInt) (jvmtiEnv* env,
01420 jthread thread,
01421 jint value);
01422
01423
01424 jvmtiError (JNICALL *ForceEarlyReturnLong) (jvmtiEnv* env,
01425 jthread thread,
01426 jlong value);
01427
01428
01429 jvmtiError (JNICALL *ForceEarlyReturnFloat) (jvmtiEnv* env,
01430 jthread thread,
01431 jfloat value);
01432
01433
01434 jvmtiError (JNICALL *ForceEarlyReturnDouble) (jvmtiEnv* env,
01435 jthread thread,
01436 jdouble value);
01437
01438
01439 jvmtiError (JNICALL *ForceEarlyReturnVoid) (jvmtiEnv* env,
01440 jthread thread);
01441
01442
01443 jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env,
01444 jint class_count,
01445 const jvmtiClassDefinition* class_definitions);
01446
01447
01448 jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env,
01449 jint* version_ptr);
01450
01451
01452 jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv* env,
01453 jvmtiCapabilities* capabilities_ptr);
01454
01455
01456 jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv* env,
01457 jclass klass,
01458 char** source_debug_extension_ptr);
01459
01460
01461 jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv* env,
01462 jmethodID method,
01463 jboolean* is_obsolete_ptr);
01464
01465
01466 jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv* env,
01467 jint request_count,
01468 const jthread* request_list,
01469 jvmtiError* results);
01470
01471
01472 jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv* env,
01473 jint request_count,
01474 const jthread* request_list,
01475 jvmtiError* results);
01476
01477
01478 void *reserved94;
01479
01480
01481 void *reserved95;
01482
01483
01484 void *reserved96;
01485
01486
01487 void *reserved97;
01488
01489
01490 void *reserved98;
01491
01492
01493 void *reserved99;
01494
01495
01496 jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv* env,
01497 jint max_frame_count,
01498 jvmtiStackInfo** stack_info_ptr,
01499 jint* thread_count_ptr);
01500
01501
01502 jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv* env,
01503 jint thread_count,
01504 const jthread* thread_list,
01505 jint max_frame_count,
01506 jvmtiStackInfo** stack_info_ptr);
01507
01508
01509 jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv* env,
01510 jthread thread,
01511 void** data_ptr);
01512
01513
01514 jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv* env,
01515 jthread thread,
01516 const void* data);
01517
01518
01519 jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv* env,
01520 jthread thread,
01521 jint start_depth,
01522 jint max_frame_count,
01523 jvmtiFrameInfo* frame_buffer,
01524 jint* count_ptr);
01525
01526
01527 void *reserved105;
01528
01529
01530 jvmtiError (JNICALL *GetTag) (jvmtiEnv* env,
01531 jobject object,
01532 jlong* tag_ptr);
01533
01534
01535 jvmtiError (JNICALL *SetTag) (jvmtiEnv* env,
01536 jobject object,
01537 jlong tag);
01538
01539
01540 jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env);
01541
01542
01543 jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* env,
01544 jobject object,
01545 jvmtiObjectReferenceCallback object_reference_callback,
01546 const void* user_data);
01547
01548
01549 jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env,
01550 jvmtiHeapRootCallback heap_root_callback,
01551 jvmtiStackReferenceCallback stack_ref_callback,
01552 jvmtiObjectReferenceCallback object_ref_callback,
01553 const void* user_data);
01554
01555
01556 jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env,
01557 jvmtiHeapObjectFilter object_filter,
01558 jvmtiHeapObjectCallback heap_object_callback,
01559 const void* user_data);
01560
01561
01562 jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env,
01563 jclass klass,
01564 jvmtiHeapObjectFilter object_filter,
01565 jvmtiHeapObjectCallback heap_object_callback,
01566 const void* user_data);
01567
01568
01569 void *reserved113;
01570
01571
01572 jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env,
01573 jint tag_count,
01574 const jlong* tags,
01575 jint* count_ptr,
01576 jobject** object_result_ptr,
01577 jlong** tag_result_ptr);
01578
01579
01580 jvmtiError (JNICALL *FollowReferences) (jvmtiEnv* env,
01581 jint heap_filter,
01582 jclass klass,
01583 jobject initial_object,
01584 const jvmtiHeapCallbacks* callbacks,
01585 const void* user_data);
01586
01587
01588 jvmtiError (JNICALL *IterateThroughHeap) (jvmtiEnv* env,
01589 jint heap_filter,
01590 jclass klass,
01591 const jvmtiHeapCallbacks* callbacks,
01592 const void* user_data);
01593
01594
01595 void *reserved117;
01596
01597
01598 void *reserved118;
01599
01600
01601 void *reserved119;
01602
01603
01604 jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv* env,
01605 const jniNativeInterface* function_table);
01606
01607
01608 jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv* env,
01609 jniNativeInterface** function_table);
01610
01611
01612 jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv* env,
01613 const jvmtiEventCallbacks* callbacks,
01614 jint size_of_callbacks);
01615
01616
01617 jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv* env,
01618 jvmtiEvent event_type);
01619
01620
01621 jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv* env,
01622 jint* extension_count_ptr,
01623 jvmtiExtensionFunctionInfo** extensions);
01624
01625
01626 jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv* env,
01627 jint* extension_count_ptr,
01628 jvmtiExtensionEventInfo** extensions);
01629
01630
01631 jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv* env,
01632 jint extension_event_index,
01633 jvmtiExtensionEvent callback);
01634
01635
01636 jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv* env);
01637
01638
01639 jvmtiError (JNICALL *GetErrorName) (jvmtiEnv* env,
01640 jvmtiError error,
01641 char** name_ptr);
01642
01643
01644 jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv* env,
01645 jvmtiJlocationFormat* format_ptr);
01646
01647
01648 jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv* env,
01649 jint* count_ptr,
01650 char*** property_ptr);
01651
01652
01653 jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv* env,
01654 const char* property,
01655 char** value_ptr);
01656
01657
01658 jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv* env,
01659 const char* property,
01660 const char* value);
01661
01662
01663 jvmtiError (JNICALL *GetPhase) (jvmtiEnv* env,
01664 jvmtiPhase* phase_ptr);
01665
01666
01667 jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv* env,
01668 jvmtiTimerInfo* info_ptr);
01669
01670
01671 jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv* env,
01672 jlong* nanos_ptr);
01673
01674
01675 jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv* env,
01676 jvmtiTimerInfo* info_ptr);
01677
01678
01679 jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv* env,
01680 jthread thread,
01681 jlong* nanos_ptr);
01682
01683
01684 jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv* env,
01685 jvmtiTimerInfo* info_ptr);
01686
01687
01688 jvmtiError (JNICALL *GetTime) (jvmtiEnv* env,
01689 jlong* nanos_ptr);
01690
01691
01692 jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv* env,
01693 jvmtiCapabilities* capabilities_ptr);
01694
01695
01696 void *reserved141;
01697
01698
01699 jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv* env,
01700 const jvmtiCapabilities* capabilities_ptr);
01701
01702
01703 jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env,
01704 const jvmtiCapabilities* capabilities_ptr);
01705
01706
01707 jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env,
01708 jint* processor_count_ptr);
01709
01710
01711 jvmtiError (JNICALL *GetClassVersionNumbers) (jvmtiEnv* env,
01712 jclass klass,
01713 jint* minor_version_ptr,
01714 jint* major_version_ptr);
01715
01716
01717 jvmtiError (JNICALL *GetConstantPool) (jvmtiEnv* env,
01718 jclass klass,
01719 jint* constant_pool_count_ptr,
01720 jint* constant_pool_byte_count_ptr,
01721 unsigned char** constant_pool_bytes_ptr);
01722
01723
01724 jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env,
01725 void** data_ptr);
01726
01727
01728 jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env,
01729 const void* data);
01730
01731
01732 jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env,
01733 const char* segment);
01734
01735
01736 jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env,
01737 jvmtiVerboseFlag flag,
01738 jboolean value);
01739
01740
01741 jvmtiError (JNICALL *AddToSystemClassLoaderSearch) (jvmtiEnv* env,
01742 const char* segment);
01743
01744
01745 jvmtiError (JNICALL *RetransformClasses) (jvmtiEnv* env,
01746 jint class_count,
01747 const jclass* classes);
01748
01749
01750 jvmtiError (JNICALL *GetOwnedMonitorStackDepthInfo) (jvmtiEnv* env,
01751 jthread thread,
01752 jint* monitor_info_count_ptr,
01753 jvmtiMonitorStackDepthInfo** monitor_info_ptr);
01754
01755
01756 jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env,
01757 jobject object,
01758 jlong* size_ptr);
01759
01760 } jvmtiInterface_1;
01761
01762 struct _jvmtiEnv {
01763 const struct jvmtiInterface_1_ *functions;
01764 #ifdef __cplusplus
01765
01766
01767 jvmtiError Allocate(jlong size,
01768 unsigned char** mem_ptr) {
01769 return functions->Allocate(this, size, mem_ptr);
01770 }
01771
01772 jvmtiError Deallocate(unsigned char* mem) {
01773 return functions->Deallocate(this, mem);
01774 }
01775
01776 jvmtiError GetThreadState(jthread thread,
01777 jint* thread_state_ptr) {
01778 return functions->GetThreadState(this, thread, thread_state_ptr);
01779 }
01780
01781 jvmtiError GetCurrentThread(jthread* thread_ptr) {
01782 return functions->GetCurrentThread(this, thread_ptr);
01783 }
01784
01785 jvmtiError GetAllThreads(jint* threads_count_ptr,
01786 jthread** threads_ptr) {
01787 return functions->GetAllThreads(this, threads_count_ptr, threads_ptr);
01788 }
01789
01790 jvmtiError SuspendThread(jthread thread) {
01791 return functions->SuspendThread(this, thread);
01792 }
01793
01794 jvmtiError SuspendThreadList(jint request_count,
01795 const jthread* request_list,
01796 jvmtiError* results) {
01797 return functions->SuspendThreadList(this, request_count, request_list, results);
01798 }
01799
01800 jvmtiError ResumeThread(jthread thread) {
01801 return functions->ResumeThread(this, thread);
01802 }
01803
01804 jvmtiError ResumeThreadList(jint request_count,
01805 const jthread* request_list,
01806 jvmtiError* results) {
01807 return functions->ResumeThreadList(this, request_count, request_list, results);
01808 }
01809
01810 jvmtiError StopThread(jthread thread,
01811 jobject exception) {
01812 return functions->StopThread(this, thread, exception);
01813 }
01814
01815 jvmtiError InterruptThread(jthread thread) {
01816 return functions->InterruptThread(this, thread);
01817 }
01818
01819 jvmtiError GetThreadInfo(jthread thread,
01820 jvmtiThreadInfo* info_ptr) {
01821 return functions->GetThreadInfo(this, thread, info_ptr);
01822 }
01823
01824 jvmtiError GetOwnedMonitorInfo(jthread thread,
01825 jint* owned_monitor_count_ptr,
01826 jobject** owned_monitors_ptr) {
01827 return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count_ptr, owned_monitors_ptr);
01828 }
01829
01830 jvmtiError GetOwnedMonitorStackDepthInfo(jthread thread,
01831 jint* monitor_info_count_ptr,
01832 jvmtiMonitorStackDepthInfo** monitor_info_ptr) {
01833 return functions->GetOwnedMonitorStackDepthInfo(this, thread, monitor_info_count_ptr, monitor_info_ptr);
01834 }
01835
01836 jvmtiError GetCurrentContendedMonitor(jthread thread,
01837 jobject* monitor_ptr) {
01838 return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr);
01839 }
01840
01841 jvmtiError RunAgentThread(jthread thread,
01842 jvmtiStartFunction proc,
01843 const void* arg,
01844 jint priority) {
01845 return functions->RunAgentThread(this, thread, proc, arg, priority);
01846 }
01847
01848 jvmtiError SetThreadLocalStorage(jthread thread,
01849 const void* data) {
01850 return functions->SetThreadLocalStorage(this, thread, data);
01851 }
01852
01853 jvmtiError GetThreadLocalStorage(jthread thread,
01854 void** data_ptr) {
01855 return functions->GetThreadLocalStorage(this, thread, data_ptr);
01856 }
01857
01858 jvmtiError GetTopThreadGroups(jint* group_count_ptr,
01859 jthreadGroup** groups_ptr) {
01860 return functions->GetTopThreadGroups(this, group_count_ptr, groups_ptr);
01861 }
01862
01863 jvmtiError GetThreadGroupInfo(jthreadGroup group,
01864 jvmtiThreadGroupInfo* info_ptr) {
01865 return functions->GetThreadGroupInfo(this, group, info_ptr);
01866 }
01867
01868 jvmtiError GetThreadGroupChildren(jthreadGroup group,
01869 jint* thread_count_ptr,
01870 jthread** threads_ptr,
01871 jint* group_count_ptr,
01872 jthreadGroup** groups_ptr) {
01873 return functions->GetThreadGroupChildren(this, group, thread_count_ptr, threads_ptr, group_count_ptr, groups_ptr);
01874 }
01875
01876 jvmtiError GetStackTrace(jthread thread,
01877 jint start_depth,
01878 jint max_frame_count,
01879 jvmtiFrameInfo* frame_buffer,
01880 jint* count_ptr) {
01881 return functions->GetStackTrace(this, thread, start_depth, max_frame_count, frame_buffer, count_ptr);
01882 }
01883
01884 jvmtiError GetAllStackTraces(jint max_frame_count,
01885 jvmtiStackInfo** stack_info_ptr,
01886 jint* thread_count_ptr) {
01887 return functions->GetAllStackTraces(this, max_frame_count, stack_info_ptr, thread_count_ptr);
01888 }
01889
01890 jvmtiError GetThreadListStackTraces(jint thread_count,
01891 const jthread* thread_list,
01892 jint max_frame_count,
01893 jvmtiStackInfo** stack_info_ptr) {
01894 return functions->GetThreadListStackTraces(this, thread_count, thread_list, max_frame_count, stack_info_ptr);
01895 }
01896
01897 jvmtiError GetFrameCount(jthread thread,
01898 jint* count_ptr) {
01899 return functions->GetFrameCount(this, thread, count_ptr);
01900 }
01901
01902 jvmtiError PopFrame(jthread thread) {
01903 return functions->PopFrame(this, thread);
01904 }
01905
01906 jvmtiError GetFrameLocation(jthread thread,
01907 jint depth,
01908 jmethodID* method_ptr,
01909 jlocation* location_ptr) {
01910 return functions->GetFrameLocation(this, thread, depth, method_ptr, location_ptr);
01911 }
01912
01913 jvmtiError NotifyFramePop(jthread thread,
01914 jint depth) {
01915 return functions->NotifyFramePop(this, thread, depth);
01916 }
01917
01918 jvmtiError ForceEarlyReturnObject(jthread thread,
01919 jobject value) {
01920 return functions->ForceEarlyReturnObject(this, thread, value);
01921 }
01922
01923 jvmtiError ForceEarlyReturnInt(jthread thread,
01924 jint value) {
01925 return functions->ForceEarlyReturnInt(this, thread, value);
01926 }
01927
01928 jvmtiError ForceEarlyReturnLong(jthread thread,
01929 jlong value) {
01930 return functions->ForceEarlyReturnLong(this, thread, value);
01931 }
01932
01933 jvmtiError ForceEarlyReturnFloat(jthread thread,
01934 jfloat value) {
01935 return functions->ForceEarlyReturnFloat(this, thread, value);
01936 }
01937
01938 jvmtiError ForceEarlyReturnDouble(jthread thread,
01939 jdouble value) {
01940 return functions->ForceEarlyReturnDouble(this, thread, value);
01941 }
01942
01943 jvmtiError ForceEarlyReturnVoid(jthread thread) {
01944 return functions->ForceEarlyReturnVoid(this, thread);
01945 }
01946
01947 jvmtiError FollowReferences(jint heap_filter,
01948 jclass klass,
01949 jobject initial_object,
01950 const jvmtiHeapCallbacks* callbacks,
01951 const void* user_data) {
01952 return functions->FollowReferences(this, heap_filter, klass, initial_object, callbacks, user_data);
01953 }
01954
01955 jvmtiError IterateThroughHeap(jint heap_filter,
01956 jclass klass,
01957 const jvmtiHeapCallbacks* callbacks,
01958 const void* user_data) {
01959 return functions->IterateThroughHeap(this, heap_filter, klass, callbacks, user_data);
01960 }
01961
01962 jvmtiError GetTag(jobject object,
01963 jlong* tag_ptr) {
01964 return functions->GetTag(this, object, tag_ptr);
01965 }
01966
01967 jvmtiError SetTag(jobject object,
01968 jlong tag) {
01969 return functions->SetTag(this, object, tag);
01970 }
01971
01972 jvmtiError GetObjectsWithTags(jint tag_count,
01973 const jlong* tags,
01974 jint* count_ptr,
01975 jobject** object_result_ptr,
01976 jlong** tag_result_ptr) {
01977 return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr, object_result_ptr, tag_result_ptr);
01978 }
01979
01980 jvmtiError ForceGarbageCollection() {
01981 return functions->ForceGarbageCollection(this);
01982 }
01983
01984 jvmtiError IterateOverObjectsReachableFromObject(jobject object,
01985 jvmtiObjectReferenceCallback object_reference_callback,
01986 const void* user_data) {
01987 return functions->IterateOverObjectsReachableFromObject(this, object, object_reference_callback, user_data);
01988 }
01989
01990 jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback,
01991 jvmtiStackReferenceCallback stack_ref_callback,
01992 jvmtiObjectReferenceCallback object_ref_callback,
01993 const void* user_data) {
01994 return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data);
01995 }
01996
01997 jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter,
01998 jvmtiHeapObjectCallback heap_object_callback,
01999 const void* user_data) {
02000 return functions->IterateOverHeap(this, object_filter, heap_object_callback, user_data);
02001 }
02002
02003 jvmtiError IterateOverInstancesOfClass(jclass klass,
02004 jvmtiHeapObjectFilter object_filter,
02005 jvmtiHeapObjectCallback heap_object_callback,
02006 const void* user_data) {
02007 return functions->IterateOverInstancesOfClass(this, klass, object_filter, heap_object_callback, user_data);
02008 }
02009
02010 jvmtiError GetLocalObject(jthread thread,
02011 jint depth,
02012 jint slot,
02013 jobject* value_ptr) {
02014 return functions->GetLocalObject(this, thread, depth, slot, value_ptr);
02015 }
02016
02017 jvmtiError GetLocalInt(jthread thread,
02018 jint depth,
02019 jint slot,
02020 jint* value_ptr) {
02021 return functions->GetLocalInt(this, thread, depth, slot, value_ptr);
02022 }
02023
02024 jvmtiError GetLocalLong(jthread thread,
02025 jint depth,
02026 jint slot,
02027 jlong* value_ptr) {
02028 return functions->GetLocalLong(this, thread, depth, slot, value_ptr);
02029 }
02030
02031 jvmtiError GetLocalFloat(jthread thread,
02032 jint depth,
02033 jint slot,
02034 jfloat* value_ptr) {
02035 return functions->GetLocalFloat(this, thread, depth, slot, value_ptr);
02036 }
02037
02038 jvmtiError GetLocalDouble(jthread thread,
02039 jint depth,
02040 jint slot,
02041 jdouble* value_ptr) {
02042 return functions->GetLocalDouble(this, thread, depth, slot, value_ptr);
02043 }
02044
02045 jvmtiError SetLocalObject(jthread thread,
02046 jint depth,
02047 jint slot,
02048 jobject value) {
02049 return functions->SetLocalObject(this, thread, depth, slot, value);
02050 }
02051
02052 jvmtiError SetLocalInt(jthread thread,
02053 jint depth,
02054 jint slot,
02055 jint value) {
02056 return functions->SetLocalInt(this, thread, depth, slot, value);
02057 }
02058
02059 jvmtiError SetLocalLong(jthread thread,
02060 jint depth,
02061 jint slot,
02062 jlong value) {
02063 return functions->SetLocalLong(this, thread, depth, slot, value);
02064 }
02065
02066 jvmtiError SetLocalFloat(jthread thread,
02067 jint depth,
02068 jint slot,
02069 jfloat value) {
02070 return functions->SetLocalFloat(this, thread, depth, slot, value);
02071 }
02072
02073 jvmtiError SetLocalDouble(jthread thread,
02074 jint depth,
02075 jint slot,
02076 jdouble value) {
02077 return functions->SetLocalDouble(this, thread, depth, slot, value);
02078 }
02079
02080 jvmtiError SetBreakpoint(jmethodID method,
02081 jlocation location) {
02082 return functions->SetBreakpoint(this, method, location);
02083 }
02084
02085 jvmtiError ClearBreakpoint(jmethodID method,
02086 jlocation location) {
02087 return functions->ClearBreakpoint(this, method, location);
02088 }
02089
02090 jvmtiError SetFieldAccessWatch(jclass klass,
02091 jfieldID field) {
02092 return functions->SetFieldAccessWatch(this, klass, field);
02093 }
02094
02095 jvmtiError ClearFieldAccessWatch(jclass klass,
02096 jfieldID field) {
02097 return functions->ClearFieldAccessWatch(this, klass, field);
02098 }
02099
02100 jvmtiError SetFieldModificationWatch(jclass klass,
02101 jfieldID field) {
02102 return functions->SetFieldModificationWatch(this, klass, field);
02103 }
02104
02105 jvmtiError ClearFieldModificationWatch(jclass klass,
02106 jfieldID field) {
02107 return functions->ClearFieldModificationWatch(this, klass, field);
02108 }
02109
02110 jvmtiError GetLoadedClasses(jint* class_count_ptr,
02111 jclass** classes_ptr) {
02112 return functions->GetLoadedClasses(this, class_count_ptr, classes_ptr);
02113 }
02114
02115 jvmtiError GetClassLoaderClasses(jobject initiating_loader,
02116 jint* class_count_ptr,
02117 jclass** classes_ptr) {
02118 return functions->GetClassLoaderClasses(this, initiating_loader, class_count_ptr, classes_ptr);
02119 }
02120
02121 jvmtiError GetClassSignature(jclass klass,
02122 char** signature_ptr,
02123 char** generic_ptr) {
02124 return functions->GetClassSignature(this, klass, signature_ptr, generic_ptr);
02125 }
02126
02127 jvmtiError GetClassStatus(jclass klass,
02128 jint* status_ptr) {
02129 return functions->GetClassStatus(this, klass, status_ptr);
02130 }
02131
02132 jvmtiError GetSourceFileName(jclass klass,
02133 char** source_name_ptr) {
02134 return functions->GetSourceFileName(this, klass, source_name_ptr);
02135 }
02136
02137 jvmtiError GetClassModifiers(jclass klass,
02138 jint* modifiers_ptr) {
02139 return functions->GetClassModifiers(this, klass, modifiers_ptr);
02140 }
02141
02142 jvmtiError GetClassMethods(jclass klass,
02143 jint* method_count_ptr,
02144 jmethodID** methods_ptr) {
02145 return functions->GetClassMethods(this, klass, method_count_ptr, methods_ptr);
02146 }
02147
02148 jvmtiError GetClassFields(jclass klass,
02149 jint* field_count_ptr,
02150 jfieldID** fields_ptr) {
02151 return functions->GetClassFields(this, klass, field_count_ptr, fields_ptr);
02152 }
02153
02154 jvmtiError GetImplementedInterfaces(jclass klass,
02155 jint* interface_count_ptr,
02156 jclass** interfaces_ptr) {
02157 return functions->GetImplementedInterfaces(this, klass, interface_count_ptr, interfaces_ptr);
02158 }
02159
02160 jvmtiError GetClassVersionNumbers(jclass klass,
02161 jint* minor_version_ptr,
02162 jint* major_version_ptr) {
02163 return functions->GetClassVersionNumbers(this, klass, minor_version_ptr, major_version_ptr);
02164 }
02165
02166 jvmtiError GetConstantPool(jclass klass,
02167 jint* constant_pool_count_ptr,
02168 jint* constant_pool_byte_count_ptr,
02169 unsigned char** constant_pool_bytes_ptr) {
02170 return functions->GetConstantPool(this, klass, constant_pool_count_ptr, constant_pool_byte_count_ptr, constant_pool_bytes_ptr);
02171 }
02172
02173 jvmtiError IsInterface(jclass klass,
02174 jboolean* is_interface_ptr) {
02175 return functions->IsInterface(this, klass, is_interface_ptr);
02176 }
02177
02178 jvmtiError IsArrayClass(jclass klass,
02179 jboolean* is_array_class_ptr) {
02180 return functions->IsArrayClass(this, klass, is_array_class_ptr);
02181 }
02182
02183 jvmtiError IsModifiableClass(jclass klass,
02184 jboolean* is_modifiable_class_ptr) {
02185 return functions->IsModifiableClass(this, klass, is_modifiable_class_ptr);
02186 }
02187
02188 jvmtiError GetClassLoader(jclass klass,
02189 jobject* classloader_ptr) {
02190 return functions->GetClassLoader(this, klass, classloader_ptr);
02191 }
02192
02193 jvmtiError GetSourceDebugExtension(jclass klass,
02194 char** source_debug_extension_ptr) {
02195 return functions->GetSourceDebugExtension(this, klass, source_debug_extension_ptr);
02196 }
02197
02198 jvmtiError RetransformClasses(jint class_count,
02199 const jclass* classes) {
02200 return functions->RetransformClasses(this, class_count, classes);
02201 }
02202
02203 jvmtiError RedefineClasses(jint class_count,
02204 const jvmtiClassDefinition* class_definitions) {
02205 return functions->RedefineClasses(this, class_count, class_definitions);
02206 }
02207
02208 jvmtiError GetObjectSize(jobject object,
02209 jlong* size_ptr) {
02210 return functions->GetObjectSize(this, object, size_ptr);
02211 }
02212
02213 jvmtiError GetObjectHashCode(jobject object,
02214 jint* hash_code_ptr) {
02215 return functions->GetObjectHashCode(this, object, hash_code_ptr);
02216 }
02217
02218 jvmtiError GetObjectMonitorUsage(jobject object,
02219 jvmtiMonitorUsage* info_ptr) {
02220 return functions->GetObjectMonitorUsage(this, object, info_ptr);
02221 }
02222
02223 jvmtiError GetFieldName(jclass klass,
02224 jfieldID field,
02225 char** name_ptr,
02226 char** signature_ptr,
02227 char** generic_ptr) {
02228 return functions->GetFieldName(this, klass, field, name_ptr, signature_ptr, generic_ptr);
02229 }
02230
02231 jvmtiError GetFieldDeclaringClass(jclass klass,
02232 jfieldID field,
02233 jclass* declaring_class_ptr) {
02234 return functions->GetFieldDeclaringClass(this, klass, field, declaring_class_ptr);
02235 }
02236
02237 jvmtiError GetFieldModifiers(jclass klass,
02238 jfieldID field,
02239 jint* modifiers_ptr) {
02240 return functions->GetFieldModifiers(this, klass, field, modifiers_ptr);
02241 }
02242
02243 jvmtiError IsFieldSynthetic(jclass klass,
02244 jfieldID field,
02245 jboolean* is_synthetic_ptr) {
02246 return functions->IsFieldSynthetic(this, klass, field, is_synthetic_ptr);
02247 }
02248
02249 jvmtiError GetMethodName(jmethodID method,
02250 char** name_ptr,
02251 char** signature_ptr,
02252 char** generic_ptr) {
02253 return functions->GetMethodName(this, method, name_ptr, signature_ptr, generic_ptr);
02254 }
02255
02256 jvmtiError GetMethodDeclaringClass(jmethodID method,
02257 jclass* declaring_class_ptr) {
02258 return functions->GetMethodDeclaringClass(this, method, declaring_class_ptr);
02259 }
02260
02261 jvmtiError GetMethodModifiers(jmethodID method,
02262 jint* modifiers_ptr) {
02263 return functions->GetMethodModifiers(this, method, modifiers_ptr);
02264 }
02265
02266 jvmtiError GetMaxLocals(jmethodID method,
02267 jint* max_ptr) {
02268 return functions->GetMaxLocals(this, method, max_ptr);
02269 }
02270
02271 jvmtiError GetArgumentsSize(jmethodID method,
02272 jint* size_ptr) {
02273 return functions->GetArgumentsSize(this, method, size_ptr);
02274 }
02275
02276 jvmtiError GetLineNumberTable(jmethodID method,
02277 jint* entry_count_ptr,
02278 jvmtiLineNumberEntry** table_ptr) {
02279 return functions->GetLineNumberTable(this, method, entry_count_ptr, table_ptr);
02280 }
02281
02282 jvmtiError GetMethodLocation(jmethodID method,
02283 jlocation* start_location_ptr,
02284 jlocation* end_location_ptr) {
02285 return functions->GetMethodLocation(this, method, start_location_ptr, end_location_ptr);
02286 }
02287
02288 jvmtiError GetLocalVariableTable(jmethodID method,
02289 jint* entry_count_ptr,
02290 jvmtiLocalVariableEntry** table_ptr) {
02291 return functions->GetLocalVariableTable(this, method, entry_count_ptr, table_ptr);
02292 }
02293
02294 jvmtiError GetBytecodes(jmethodID method,
02295 jint* bytecode_count_ptr,
02296 unsigned char** bytecodes_ptr) {
02297 return functions->GetBytecodes(this, method, bytecode_count_ptr, bytecodes_ptr);
02298 }
02299
02300 jvmtiError IsMethodNative(jmethodID method,
02301 jboolean* is_native_ptr) {
02302 return functions->IsMethodNative(this, method, is_native_ptr);
02303 }
02304
02305 jvmtiError IsMethodSynthetic(jmethodID method,
02306 jboolean* is_synthetic_ptr) {
02307 return functions->IsMethodSynthetic(this, method, is_synthetic_ptr);
02308 }
02309
02310 jvmtiError IsMethodObsolete(jmethodID method,
02311 jboolean* is_obsolete_ptr) {
02312 return functions->IsMethodObsolete(this, method, is_obsolete_ptr);
02313 }
02314
02315 jvmtiError SetNativeMethodPrefix(const char* prefix) {
02316 return functions->SetNativeMethodPrefix(this, prefix);
02317 }
02318
02319 jvmtiError SetNativeMethodPrefixes(jint prefix_count,
02320 char** prefixes) {
02321 return functions->SetNativeMethodPrefixes(this, prefix_count, prefixes);
02322 }
02323
02324 jvmtiError CreateRawMonitor(const char* name,
02325 jrawMonitorID* monitor_ptr) {
02326 return functions->CreateRawMonitor(this, name, monitor_ptr);
02327 }
02328
02329 jvmtiError DestroyRawMonitor(jrawMonitorID monitor) {
02330 return functions->DestroyRawMonitor(this, monitor);
02331 }
02332
02333 jvmtiError RawMonitorEnter(jrawMonitorID monitor) {
02334 return functions->RawMonitorEnter(this, monitor);
02335 }
02336
02337 jvmtiError RawMonitorExit(jrawMonitorID monitor) {
02338 return functions->RawMonitorExit(this, monitor);
02339 }
02340
02341 jvmtiError RawMonitorWait(jrawMonitorID monitor,
02342 jlong millis) {
02343 return functions->RawMonitorWait(this, monitor, millis);
02344 }
02345
02346 jvmtiError RawMonitorNotify(jrawMonitorID monitor) {
02347 return functions->RawMonitorNotify(this, monitor);
02348 }
02349
02350 jvmtiError RawMonitorNotifyAll(jrawMonitorID monitor) {
02351 return functions->RawMonitorNotifyAll(this, monitor);
02352 }
02353
02354 jvmtiError SetJNIFunctionTable(const jniNativeInterface* function_table) {
02355 return functions->SetJNIFunctionTable(this, function_table);
02356 }
02357
02358 jvmtiError GetJNIFunctionTable(jniNativeInterface** function_table) {
02359 return functions->GetJNIFunctionTable(this, function_table);
02360 }
02361
02362 jvmtiError SetEventCallbacks(const jvmtiEventCallbacks* callbacks,
02363 jint size_of_callbacks) {
02364 return functions->SetEventCallbacks(this, callbacks, size_of_callbacks);
02365 }
02366
02367 jvmtiError SetEventNotificationMode(jvmtiEventMode mode,
02368 jvmtiEvent event_type,
02369 jthread event_thread,
02370 ...) {
02371 return functions->SetEventNotificationMode(this, mode, event_type, event_thread);
02372 }
02373
02374 jvmtiError GenerateEvents(jvmtiEvent event_type) {
02375 return functions->GenerateEvents(this, event_type);
02376 }
02377
02378 jvmtiError GetExtensionFunctions(jint* extension_count_ptr,
02379 jvmtiExtensionFunctionInfo** extensions) {
02380 return functions->GetExtensionFunctions(this, extension_count_ptr, extensions);
02381 }
02382
02383 jvmtiError GetExtensionEvents(jint* extension_count_ptr,
02384 jvmtiExtensionEventInfo** extensions) {
02385 return functions->GetExtensionEvents(this, extension_count_ptr, extensions);
02386 }
02387
02388 jvmtiError SetExtensionEventCallback(jint extension_event_index,
02389 jvmtiExtensionEvent callback) {
02390 return functions->SetExtensionEventCallback(this, extension_event_index, callback);
02391 }
02392
02393 jvmtiError GetPotentialCapabilities(jvmtiCapabilities* capabilities_ptr) {
02394 return functions->GetPotentialCapabilities(this, capabilities_ptr);
02395 }
02396
02397 jvmtiError AddCapabilities(const jvmtiCapabilities* capabilities_ptr) {
02398 return functions->AddCapabilities(this, capabilities_ptr);
02399 }
02400
02401 jvmtiError RelinquishCapabilities(const jvmtiCapabilities* capabilities_ptr) {
02402 return functions->RelinquishCapabilities(this, capabilities_ptr);
02403 }
02404
02405 jvmtiError GetCapabilities(jvmtiCapabilities* capabilities_ptr) {
02406 return functions->GetCapabilities(this, capabilities_ptr);
02407 }
02408
02409 jvmtiError GetCurrentThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {
02410 return functions->GetCurrentThreadCpuTimerInfo(this, info_ptr);
02411 }
02412
02413 jvmtiError GetCurrentThreadCpuTime(jlong* nanos_ptr) {
02414 return functions->GetCurrentThreadCpuTime(this, nanos_ptr);
02415 }
02416
02417 jvmtiError GetThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {
02418 return functions->GetThreadCpuTimerInfo(this, info_ptr);
02419 }
02420
02421 jvmtiError GetThreadCpuTime(jthread thread,
02422 jlong* nanos_ptr) {
02423 return functions->GetThreadCpuTime(this, thread, nanos_ptr);
02424 }
02425
02426 jvmtiError GetTimerInfo(jvmtiTimerInfo* info_ptr) {
02427 return functions->GetTimerInfo(this, info_ptr);
02428 }
02429
02430 jvmtiError GetTime(jlong* nanos_ptr) {
02431 return functions->GetTime(this, nanos_ptr);
02432 }
02433
02434 jvmtiError GetAvailableProcessors(jint* processor_count_ptr) {
02435 return functions->GetAvailableProcessors(this, processor_count_ptr);
02436 }
02437
02438 jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) {
02439 return functions->AddToBootstrapClassLoaderSearch(this, segment);
02440 }
02441
02442 jvmtiError AddToSystemClassLoaderSearch(const char* segment) {
02443 return functions->AddToSystemClassLoaderSearch(this, segment);
02444 }
02445
02446 jvmtiError GetSystemProperties(jint* count_ptr,
02447 char*** property_ptr) {
02448 return functions->GetSystemProperties(this, count_ptr, property_ptr);
02449 }
02450
02451 jvmtiError GetSystemProperty(const char* property,
02452 char** value_ptr) {
02453 return functions->GetSystemProperty(this, property, value_ptr);
02454 }
02455
02456 jvmtiError SetSystemProperty(const char* property,
02457 const char* value) {
02458 return functions->SetSystemProperty(this, property, value);
02459 }
02460
02461 jvmtiError GetPhase(jvmtiPhase* phase_ptr) {
02462 return functions->GetPhase(this, phase_ptr);
02463 }
02464
02465 jvmtiError DisposeEnvironment() {
02466 return functions->DisposeEnvironment(this);
02467 }
02468
02469 jvmtiError SetEnvironmentLocalStorage(const void* data) {
02470 return functions->SetEnvironmentLocalStorage(this, data);
02471 }
02472
02473 jvmtiError GetEnvironmentLocalStorage(void** data_ptr) {
02474 return functions->GetEnvironmentLocalStorage(this, data_ptr);
02475 }
02476
02477 jvmtiError GetVersionNumber(jint* version_ptr) {
02478 return functions->GetVersionNumber(this, version_ptr);
02479 }
02480
02481 jvmtiError GetErrorName(jvmtiError error,
02482 char** name_ptr) {
02483 return functions->GetErrorName(this, error, name_ptr);
02484 }
02485
02486 jvmtiError SetVerboseFlag(jvmtiVerboseFlag flag,
02487 jboolean value) {
02488 return functions->SetVerboseFlag(this, flag, value);
02489 }
02490
02491 jvmtiError GetJLocationFormat(jvmtiJlocationFormat* format_ptr) {
02492 return functions->GetJLocationFormat(this, format_ptr);
02493 }
02494
02495 #endif
02496 };
02497
02498
02499 #ifdef __cplusplus
02500 }
02501 #endif
02502
02503 #endif
02504