BWAPI
EISBot/c_src/include/jni/jvmti.h
Go to the documentation of this file.
00001 #ifdef USE_PRAGMA_IDENT_HDR
00002 #pragma ident "@(#)jvmtiLib.xsl 1.38 06/08/02 23:22:31 JVM"
00003 #endif
00004 /*
00005  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
00006  * SUN PROPRIETARY/CONFIDENTIAL.  Use is subject to license terms.
00007  */
00008 
00009     /* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */
00010 
00011 
00012     /* Include file for the Java(tm) Virtual Machine Tool Interface */
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  /* version: 1.1.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     /* Forward declaration of the environment */
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 /* __cplusplus */
00051 
00052 /* Derived Base Types */
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     /* Constants */
00062 
00063 
00064     /* Thread State Flags */ 
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     /* java.lang.Thread.State Conversion Masks */ 
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     /* Thread Priority Constants */ 
00098 
00099 enum {
00100     JVMTI_THREAD_MIN_PRIORITY = 1,
00101     JVMTI_THREAD_NORM_PRIORITY = 5,
00102     JVMTI_THREAD_MAX_PRIORITY = 10
00103 };
00104 
00105     /* Heap Filter Flags */ 
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     /* Heap Visit Control Flags */ 
00115 
00116 enum {
00117     JVMTI_VISIT_OBJECTS = 0x100,
00118     JVMTI_VISIT_ABORT = 0x8000
00119 };
00120 
00121     /* Heap Reference Enumeration */ 
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     /* Primitive Type Enumeration */ 
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     /* Heap Object Filter Enumeration */ 
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     /* Heap Root Kind Enumeration */ 
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     /* Object Reference Enumeration */ 
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     /* Iteration Control Enumeration */ 
00191 
00192 typedef enum {
00193     JVMTI_ITERATION_CONTINUE = 1,
00194     JVMTI_ITERATION_IGNORE = 2,
00195     JVMTI_ITERATION_ABORT = 0
00196 } jvmtiIterationControl;
00197 
00198     /* Class Status Flags */ 
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     /* Event Enable/Disable */ 
00210 
00211 typedef enum {
00212     JVMTI_ENABLE = 1,
00213     JVMTI_DISABLE = 0
00214 } jvmtiEventMode;
00215 
00216     /* Extension Function/Event Parameter Types */ 
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     /* Extension Function/Event Parameter Kinds */ 
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     /* Timer Kinds */ 
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     /* Phases of execution */ 
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     /* Version Interface Types */ 
00269 
00270 enum {
00271     JVMTI_VERSION_INTERFACE_JNI = 0x00000000,
00272     JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000
00273 };
00274 
00275     /* Version Masks */ 
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     /* Version Shifts */ 
00285 
00286 enum {
00287     JVMTI_VERSION_SHIFT_MAJOR = 16,
00288     JVMTI_VERSION_SHIFT_MINOR = 8,
00289     JVMTI_VERSION_SHIFT_MICRO = 0
00290 };
00291 
00292     /* Verbose Flag Enumeration */ 
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     /* JLocation Format Enumeration */ 
00302 
00303 typedef enum {
00304     JVMTI_JLOCATION_JVMBCI = 1,
00305     JVMTI_JLOCATION_MACHINEPC = 2,
00306     JVMTI_JLOCATION_OTHER = 0
00307 } jvmtiJlocationFormat;
00308 
00309     /* Resource Exhaustion Flags */ 
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     /* Errors */
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     /* Event IDs */
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     /* Pre-Declarations */
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     /* Function Types */
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     /* Structure Types */
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     /* Event Definitions */
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     /* Event Callback Structure */
00907 
00908 typedef struct {
00909                               /*   50 : VM Initialization Event */
00910     jvmtiEventVMInit VMInit;
00911                               /*   51 : VM Death Event */
00912     jvmtiEventVMDeath VMDeath;
00913                               /*   52 : Thread Start */
00914     jvmtiEventThreadStart ThreadStart;
00915                               /*   53 : Thread End */
00916     jvmtiEventThreadEnd ThreadEnd;
00917                               /*   54 : Class File Load Hook */
00918     jvmtiEventClassFileLoadHook ClassFileLoadHook;
00919                               /*   55 : Class Load */
00920     jvmtiEventClassLoad ClassLoad;
00921                               /*   56 : Class Prepare */
00922     jvmtiEventClassPrepare ClassPrepare;
00923                               /*   57 : VM Start Event */
00924     jvmtiEventVMStart VMStart;
00925                               /*   58 : Exception */
00926     jvmtiEventException Exception;
00927                               /*   59 : Exception Catch */
00928     jvmtiEventExceptionCatch ExceptionCatch;
00929                               /*   60 : Single Step */
00930     jvmtiEventSingleStep SingleStep;
00931                               /*   61 : Frame Pop */
00932     jvmtiEventFramePop FramePop;
00933                               /*   62 : Breakpoint */
00934     jvmtiEventBreakpoint Breakpoint;
00935                               /*   63 : Field Access */
00936     jvmtiEventFieldAccess FieldAccess;
00937                               /*   64 : Field Modification */
00938     jvmtiEventFieldModification FieldModification;
00939                               /*   65 : Method Entry */
00940     jvmtiEventMethodEntry MethodEntry;
00941                               /*   66 : Method Exit */
00942     jvmtiEventMethodExit MethodExit;
00943                               /*   67 : Native Method Bind */
00944     jvmtiEventNativeMethodBind NativeMethodBind;
00945                               /*   68 : Compiled Method Load */
00946     jvmtiEventCompiledMethodLoad CompiledMethodLoad;
00947                               /*   69 : Compiled Method Unload */
00948     jvmtiEventCompiledMethodUnload CompiledMethodUnload;
00949                               /*   70 : Dynamic Code Generated */
00950     jvmtiEventDynamicCodeGenerated DynamicCodeGenerated;
00951                               /*   71 : Data Dump Request */
00952     jvmtiEventDataDumpRequest DataDumpRequest;
00953                               /*   72 */
00954     jvmtiEventReserved reserved72;
00955                               /*   73 : Monitor Wait */
00956     jvmtiEventMonitorWait MonitorWait;
00957                               /*   74 : Monitor Waited */
00958     jvmtiEventMonitorWaited MonitorWaited;
00959                               /*   75 : Monitor Contended Enter */
00960     jvmtiEventMonitorContendedEnter MonitorContendedEnter;
00961                               /*   76 : Monitor Contended Entered */
00962     jvmtiEventMonitorContendedEntered MonitorContendedEntered;
00963                               /*   77 */
00964     jvmtiEventReserved reserved77;
00965                               /*   78 */
00966     jvmtiEventReserved reserved78;
00967                               /*   79 */
00968     jvmtiEventReserved reserved79;
00969                               /*   80 : Resource Exhausted */
00970     jvmtiEventResourceExhausted ResourceExhausted;
00971                               /*   81 : Garbage Collection Start */
00972     jvmtiEventGarbageCollectionStart GarbageCollectionStart;
00973                               /*   82 : Garbage Collection Finish */
00974     jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;
00975                               /*   83 : Object Free */
00976     jvmtiEventObjectFree ObjectFree;
00977                               /*   84 : VM Object Allocation */
00978     jvmtiEventVMObjectAlloc VMObjectAlloc;
00979 } jvmtiEventCallbacks;
00980 
00981 
00982     /* Function Interface */
00983     
00984 typedef struct jvmtiInterface_1_ {
00985 
00986   /*   1 :  RESERVED */
00987   void *reserved1;
00988 
00989   /*   2 : Set Event Notification Mode */
00990   jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env, 
00991     jvmtiEventMode mode, 
00992     jvmtiEvent event_type, 
00993     jthread event_thread, 
00994      ...);
00995 
00996   /*   3 :  RESERVED */
00997   void *reserved3;
00998 
00999   /*   4 : Get All Threads */
01000   jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env, 
01001     jint* threads_count_ptr, 
01002     jthread** threads_ptr);
01003 
01004   /*   5 : Suspend Thread */
01005   jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env, 
01006     jthread thread);
01007 
01008   /*   6 : Resume Thread */
01009   jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env, 
01010     jthread thread);
01011 
01012   /*   7 : Stop Thread */
01013   jvmtiError (JNICALL *StopThread) (jvmtiEnv* env, 
01014     jthread thread, 
01015     jobject exception);
01016 
01017   /*   8 : Interrupt Thread */
01018   jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env, 
01019     jthread thread);
01020 
01021   /*   9 : Get Thread Info */
01022   jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env, 
01023     jthread thread, 
01024     jvmtiThreadInfo* info_ptr);
01025 
01026   /*   10 : Get Owned Monitor Info */
01027   jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env, 
01028     jthread thread, 
01029     jint* owned_monitor_count_ptr, 
01030     jobject** owned_monitors_ptr);
01031 
01032   /*   11 : Get Current Contended Monitor */
01033   jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env, 
01034     jthread thread, 
01035     jobject* monitor_ptr);
01036 
01037   /*   12 : Run Agent Thread */
01038   jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env, 
01039     jthread thread, 
01040     jvmtiStartFunction proc, 
01041     const void* arg, 
01042     jint priority);
01043 
01044   /*   13 : Get Top Thread Groups */
01045   jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env, 
01046     jint* group_count_ptr, 
01047     jthreadGroup** groups_ptr);
01048 
01049   /*   14 : Get Thread Group Info */
01050   jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env, 
01051     jthreadGroup group, 
01052     jvmtiThreadGroupInfo* info_ptr);
01053 
01054   /*   15 : Get Thread Group Children */
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   /*   16 : Get Frame Count */
01063   jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env, 
01064     jthread thread, 
01065     jint* count_ptr);
01066 
01067   /*   17 : Get Thread State */
01068   jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env, 
01069     jthread thread, 
01070     jint* thread_state_ptr);
01071 
01072   /*   18 : Get Current Thread */
01073   jvmtiError (JNICALL *GetCurrentThread) (jvmtiEnv* env, 
01074     jthread* thread_ptr);
01075 
01076   /*   19 : Get Frame Location */
01077   jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env, 
01078     jthread thread, 
01079     jint depth, 
01080     jmethodID* method_ptr, 
01081     jlocation* location_ptr);
01082 
01083   /*   20 : Notify Frame Pop */
01084   jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env, 
01085     jthread thread, 
01086     jint depth);
01087 
01088   /*   21 : Get Local Variable - Object */
01089   jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env, 
01090     jthread thread, 
01091     jint depth, 
01092     jint slot, 
01093     jobject* value_ptr);
01094 
01095   /*   22 : Get Local Variable - Int */
01096   jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env, 
01097     jthread thread, 
01098     jint depth, 
01099     jint slot, 
01100     jint* value_ptr);
01101 
01102   /*   23 : Get Local Variable - Long */
01103   jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env, 
01104     jthread thread, 
01105     jint depth, 
01106     jint slot, 
01107     jlong* value_ptr);
01108 
01109   /*   24 : Get Local Variable - Float */
01110   jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env, 
01111     jthread thread, 
01112     jint depth, 
01113     jint slot, 
01114     jfloat* value_ptr);
01115 
01116   /*   25 : Get Local Variable - Double */
01117   jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env, 
01118     jthread thread, 
01119     jint depth, 
01120     jint slot, 
01121     jdouble* value_ptr);
01122 
01123   /*   26 : Set Local Variable - Object */
01124   jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env, 
01125     jthread thread, 
01126     jint depth, 
01127     jint slot, 
01128     jobject value);
01129 
01130   /*   27 : Set Local Variable - Int */
01131   jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env, 
01132     jthread thread, 
01133     jint depth, 
01134     jint slot, 
01135     jint value);
01136 
01137   /*   28 : Set Local Variable - Long */
01138   jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env, 
01139     jthread thread, 
01140     jint depth, 
01141     jint slot, 
01142     jlong value);
01143 
01144   /*   29 : Set Local Variable - Float */
01145   jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv* env, 
01146     jthread thread, 
01147     jint depth, 
01148     jint slot, 
01149     jfloat value);
01150 
01151   /*   30 : Set Local Variable - Double */
01152   jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv* env, 
01153     jthread thread, 
01154     jint depth, 
01155     jint slot, 
01156     jdouble value);
01157 
01158   /*   31 : Create Raw Monitor */
01159   jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv* env, 
01160     const char* name, 
01161     jrawMonitorID* monitor_ptr);
01162 
01163   /*   32 : Destroy Raw Monitor */
01164   jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv* env, 
01165     jrawMonitorID monitor);
01166 
01167   /*   33 : Raw Monitor Enter */
01168   jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv* env, 
01169     jrawMonitorID monitor);
01170 
01171   /*   34 : Raw Monitor Exit */
01172   jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv* env, 
01173     jrawMonitorID monitor);
01174 
01175   /*   35 : Raw Monitor Wait */
01176   jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv* env, 
01177     jrawMonitorID monitor, 
01178     jlong millis);
01179 
01180   /*   36 : Raw Monitor Notify */
01181   jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv* env, 
01182     jrawMonitorID monitor);
01183 
01184   /*   37 : Raw Monitor Notify All */
01185   jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv* env, 
01186     jrawMonitorID monitor);
01187 
01188   /*   38 : Set Breakpoint */
01189   jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv* env, 
01190     jmethodID method, 
01191     jlocation location);
01192 
01193   /*   39 : Clear Breakpoint */
01194   jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv* env, 
01195     jmethodID method, 
01196     jlocation location);
01197 
01198   /*   40 :  RESERVED */
01199   void *reserved40;
01200 
01201   /*   41 : Set Field Access Watch */
01202   jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv* env, 
01203     jclass klass, 
01204     jfieldID field);
01205 
01206   /*   42 : Clear Field Access Watch */
01207   jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv* env, 
01208     jclass klass, 
01209     jfieldID field);
01210 
01211   /*   43 : Set Field Modification Watch */
01212   jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env, 
01213     jclass klass, 
01214     jfieldID field);
01215 
01216   /*   44 : Clear Field Modification Watch */
01217   jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env, 
01218     jclass klass, 
01219     jfieldID field);
01220 
01221   /*   45 : Is Modifiable Class */
01222   jvmtiError (JNICALL *IsModifiableClass) (jvmtiEnv* env, 
01223     jclass klass, 
01224     jboolean* is_modifiable_class_ptr);
01225 
01226   /*   46 : Allocate */
01227   jvmtiError (JNICALL *Allocate) (jvmtiEnv* env, 
01228     jlong size, 
01229     unsigned char** mem_ptr);
01230 
01231   /*   47 : Deallocate */
01232   jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env, 
01233     unsigned char* mem);
01234 
01235   /*   48 : Get Class Signature */
01236   jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv* env, 
01237     jclass klass, 
01238     char** signature_ptr, 
01239     char** generic_ptr);
01240 
01241   /*   49 : Get Class Status */
01242   jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv* env, 
01243     jclass klass, 
01244     jint* status_ptr);
01245 
01246   /*   50 : Get Source File Name */
01247   jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv* env, 
01248     jclass klass, 
01249     char** source_name_ptr);
01250 
01251   /*   51 : Get Class Modifiers */
01252   jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv* env, 
01253     jclass klass, 
01254     jint* modifiers_ptr);
01255 
01256   /*   52 : Get Class Methods */
01257   jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv* env, 
01258     jclass klass, 
01259     jint* method_count_ptr, 
01260     jmethodID** methods_ptr);
01261 
01262   /*   53 : Get Class Fields */
01263   jvmtiError (JNICALL *GetClassFields) (jvmtiEnv* env, 
01264     jclass klass, 
01265     jint* field_count_ptr, 
01266     jfieldID** fields_ptr);
01267 
01268   /*   54 : Get Implemented Interfaces */
01269   jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv* env, 
01270     jclass klass, 
01271     jint* interface_count_ptr, 
01272     jclass** interfaces_ptr);
01273 
01274   /*   55 : Is Interface */
01275   jvmtiError (JNICALL *IsInterface) (jvmtiEnv* env, 
01276     jclass klass, 
01277     jboolean* is_interface_ptr);
01278 
01279   /*   56 : Is Array Class */
01280   jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv* env, 
01281     jclass klass, 
01282     jboolean* is_array_class_ptr);
01283 
01284   /*   57 : Get Class Loader */
01285   jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv* env, 
01286     jclass klass, 
01287     jobject* classloader_ptr);
01288 
01289   /*   58 : Get Object Hash Code */
01290   jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv* env, 
01291     jobject object, 
01292     jint* hash_code_ptr);
01293 
01294   /*   59 : Get Object Monitor Usage */
01295   jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv* env, 
01296     jobject object, 
01297     jvmtiMonitorUsage* info_ptr);
01298 
01299   /*   60 : Get Field Name (and Signature) */
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   /*   61 : Get Field Declaring Class */
01308   jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv* env, 
01309     jclass klass, 
01310     jfieldID field, 
01311     jclass* declaring_class_ptr);
01312 
01313   /*   62 : Get Field Modifiers */
01314   jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv* env, 
01315     jclass klass, 
01316     jfieldID field, 
01317     jint* modifiers_ptr);
01318 
01319   /*   63 : Is Field Synthetic */
01320   jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv* env, 
01321     jclass klass, 
01322     jfieldID field, 
01323     jboolean* is_synthetic_ptr);
01324 
01325   /*   64 : Get Method Name (and Signature) */
01326   jvmtiError (JNICALL *GetMethodName) (jvmtiEnv* env, 
01327     jmethodID method, 
01328     char** name_ptr, 
01329     char** signature_ptr, 
01330     char** generic_ptr);
01331 
01332   /*   65 : Get Method Declaring Class */
01333   jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv* env, 
01334     jmethodID method, 
01335     jclass* declaring_class_ptr);
01336 
01337   /*   66 : Get Method Modifiers */
01338   jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv* env, 
01339     jmethodID method, 
01340     jint* modifiers_ptr);
01341 
01342   /*   67 :  RESERVED */
01343   void *reserved67;
01344 
01345   /*   68 : Get Max Locals */
01346   jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv* env, 
01347     jmethodID method, 
01348     jint* max_ptr);
01349 
01350   /*   69 : Get Arguments Size */
01351   jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv* env, 
01352     jmethodID method, 
01353     jint* size_ptr);
01354 
01355   /*   70 : Get Line Number Table */
01356   jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv* env, 
01357     jmethodID method, 
01358     jint* entry_count_ptr, 
01359     jvmtiLineNumberEntry** table_ptr);
01360 
01361   /*   71 : Get Method Location */
01362   jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv* env, 
01363     jmethodID method, 
01364     jlocation* start_location_ptr, 
01365     jlocation* end_location_ptr);
01366 
01367   /*   72 : Get Local Variable Table */
01368   jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env, 
01369     jmethodID method, 
01370     jint* entry_count_ptr, 
01371     jvmtiLocalVariableEntry** table_ptr);
01372 
01373   /*   73 : Set Native Method Prefix */
01374   jvmtiError (JNICALL *SetNativeMethodPrefix) (jvmtiEnv* env, 
01375     const char* prefix);
01376 
01377   /*   74 : Set Native Method Prefixes */
01378   jvmtiError (JNICALL *SetNativeMethodPrefixes) (jvmtiEnv* env, 
01379     jint prefix_count, 
01380     char** prefixes);
01381 
01382   /*   75 : Get Bytecodes */
01383   jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env, 
01384     jmethodID method, 
01385     jint* bytecode_count_ptr, 
01386     unsigned char** bytecodes_ptr);
01387 
01388   /*   76 : Is Method Native */
01389   jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env, 
01390     jmethodID method, 
01391     jboolean* is_native_ptr);
01392 
01393   /*   77 : Is Method Synthetic */
01394   jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv* env, 
01395     jmethodID method, 
01396     jboolean* is_synthetic_ptr);
01397 
01398   /*   78 : Get Loaded Classes */
01399   jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv* env, 
01400     jint* class_count_ptr, 
01401     jclass** classes_ptr);
01402 
01403   /*   79 : Get Classloader Classes */
01404   jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env, 
01405     jobject initiating_loader, 
01406     jint* class_count_ptr, 
01407     jclass** classes_ptr);
01408 
01409   /*   80 : Pop Frame */
01410   jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env, 
01411     jthread thread);
01412 
01413   /*   81 : Force Early Return - Object */
01414   jvmtiError (JNICALL *ForceEarlyReturnObject) (jvmtiEnv* env, 
01415     jthread thread, 
01416     jobject value);
01417 
01418   /*   82 : Force Early Return - Int */
01419   jvmtiError (JNICALL *ForceEarlyReturnInt) (jvmtiEnv* env, 
01420     jthread thread, 
01421     jint value);
01422 
01423   /*   83 : Force Early Return - Long */
01424   jvmtiError (JNICALL *ForceEarlyReturnLong) (jvmtiEnv* env, 
01425     jthread thread, 
01426     jlong value);
01427 
01428   /*   84 : Force Early Return - Float */
01429   jvmtiError (JNICALL *ForceEarlyReturnFloat) (jvmtiEnv* env, 
01430     jthread thread, 
01431     jfloat value);
01432 
01433   /*   85 : Force Early Return - Double */
01434   jvmtiError (JNICALL *ForceEarlyReturnDouble) (jvmtiEnv* env, 
01435     jthread thread, 
01436     jdouble value);
01437 
01438   /*   86 : Force Early Return - Void */
01439   jvmtiError (JNICALL *ForceEarlyReturnVoid) (jvmtiEnv* env, 
01440     jthread thread);
01441 
01442   /*   87 : Redefine Classes */
01443   jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env, 
01444     jint class_count, 
01445     const jvmtiClassDefinition* class_definitions);
01446 
01447   /*   88 : Get Version Number */
01448   jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env, 
01449     jint* version_ptr);
01450 
01451   /*   89 : Get Capabilities */
01452   jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv* env, 
01453     jvmtiCapabilities* capabilities_ptr);
01454 
01455   /*   90 : Get Source Debug Extension */
01456   jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv* env, 
01457     jclass klass, 
01458     char** source_debug_extension_ptr);
01459 
01460   /*   91 : Is Method Obsolete */
01461   jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv* env, 
01462     jmethodID method, 
01463     jboolean* is_obsolete_ptr);
01464 
01465   /*   92 : Suspend Thread List */
01466   jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv* env, 
01467     jint request_count, 
01468     const jthread* request_list, 
01469     jvmtiError* results);
01470 
01471   /*   93 : Resume Thread List */
01472   jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv* env, 
01473     jint request_count, 
01474     const jthread* request_list, 
01475     jvmtiError* results);
01476 
01477   /*   94 :  RESERVED */
01478   void *reserved94;
01479 
01480   /*   95 :  RESERVED */
01481   void *reserved95;
01482 
01483   /*   96 :  RESERVED */
01484   void *reserved96;
01485 
01486   /*   97 :  RESERVED */
01487   void *reserved97;
01488 
01489   /*   98 :  RESERVED */
01490   void *reserved98;
01491 
01492   /*   99 :  RESERVED */
01493   void *reserved99;
01494 
01495   /*   100 : Get All Stack Traces */
01496   jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv* env, 
01497     jint max_frame_count, 
01498     jvmtiStackInfo** stack_info_ptr, 
01499     jint* thread_count_ptr);
01500 
01501   /*   101 : Get Thread List Stack Traces */
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   /*   102 : Get Thread Local Storage */
01509   jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv* env, 
01510     jthread thread, 
01511     void** data_ptr);
01512 
01513   /*   103 : Set Thread Local Storage */
01514   jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv* env, 
01515     jthread thread, 
01516     const void* data);
01517 
01518   /*   104 : Get Stack Trace */
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   /*   105 :  RESERVED */
01527   void *reserved105;
01528 
01529   /*   106 : Get Tag */
01530   jvmtiError (JNICALL *GetTag) (jvmtiEnv* env, 
01531     jobject object, 
01532     jlong* tag_ptr);
01533 
01534   /*   107 : Set Tag */
01535   jvmtiError (JNICALL *SetTag) (jvmtiEnv* env, 
01536     jobject object, 
01537     jlong tag);
01538 
01539   /*   108 : Force Garbage Collection */
01540   jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env);
01541 
01542   /*   109 : Iterate Over Objects Reachable From Object */
01543   jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* env, 
01544     jobject object, 
01545     jvmtiObjectReferenceCallback object_reference_callback, 
01546     const void* user_data);
01547 
01548   /*   110 : Iterate Over Reachable Objects */
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   /*   111 : Iterate Over Heap */
01556   jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env, 
01557     jvmtiHeapObjectFilter object_filter, 
01558     jvmtiHeapObjectCallback heap_object_callback, 
01559     const void* user_data);
01560 
01561   /*   112 : Iterate Over Instances Of Class */
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   /*   113 :  RESERVED */
01569   void *reserved113;
01570 
01571   /*   114 : Get Objects With Tags */
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   /*   115 : Follow References */
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   /*   116 : Iterate Through Heap */
01588   jvmtiError (JNICALL *IterateThroughHeap) (jvmtiEnv* env, 
01589     jint heap_filter, 
01590     jclass klass, 
01591     const jvmtiHeapCallbacks* callbacks, 
01592     const void* user_data);
01593 
01594   /*   117 :  RESERVED */
01595   void *reserved117;
01596 
01597   /*   118 :  RESERVED */
01598   void *reserved118;
01599 
01600   /*   119 :  RESERVED */
01601   void *reserved119;
01602 
01603   /*   120 : Set JNI Function Table */
01604   jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv* env, 
01605     const jniNativeInterface* function_table);
01606 
01607   /*   121 : Get JNI Function Table */
01608   jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv* env, 
01609     jniNativeInterface** function_table);
01610 
01611   /*   122 : Set Event Callbacks */
01612   jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv* env, 
01613     const jvmtiEventCallbacks* callbacks, 
01614     jint size_of_callbacks);
01615 
01616   /*   123 : Generate Events */
01617   jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv* env, 
01618     jvmtiEvent event_type);
01619 
01620   /*   124 : Get Extension Functions */
01621   jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv* env, 
01622     jint* extension_count_ptr, 
01623     jvmtiExtensionFunctionInfo** extensions);
01624 
01625   /*   125 : Get Extension Events */
01626   jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv* env, 
01627     jint* extension_count_ptr, 
01628     jvmtiExtensionEventInfo** extensions);
01629 
01630   /*   126 : Set Extension Event Callback */
01631   jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv* env, 
01632     jint extension_event_index, 
01633     jvmtiExtensionEvent callback);
01634 
01635   /*   127 : Dispose Environment */
01636   jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv* env);
01637 
01638   /*   128 : Get Error Name */
01639   jvmtiError (JNICALL *GetErrorName) (jvmtiEnv* env, 
01640     jvmtiError error, 
01641     char** name_ptr);
01642 
01643   /*   129 : Get JLocation Format */
01644   jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv* env, 
01645     jvmtiJlocationFormat* format_ptr);
01646 
01647   /*   130 : Get System Properties */
01648   jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv* env, 
01649     jint* count_ptr, 
01650     char*** property_ptr);
01651 
01652   /*   131 : Get System Property */
01653   jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv* env, 
01654     const char* property, 
01655     char** value_ptr);
01656 
01657   /*   132 : Set System Property */
01658   jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv* env, 
01659     const char* property, 
01660     const char* value);
01661 
01662   /*   133 : Get Phase */
01663   jvmtiError (JNICALL *GetPhase) (jvmtiEnv* env, 
01664     jvmtiPhase* phase_ptr);
01665 
01666   /*   134 : Get Current Thread CPU Timer Information */
01667   jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv* env, 
01668     jvmtiTimerInfo* info_ptr);
01669 
01670   /*   135 : Get Current Thread CPU Time */
01671   jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv* env, 
01672     jlong* nanos_ptr);
01673 
01674   /*   136 : Get Thread CPU Timer Information */
01675   jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv* env, 
01676     jvmtiTimerInfo* info_ptr);
01677 
01678   /*   137 : Get Thread CPU Time */
01679   jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv* env, 
01680     jthread thread, 
01681     jlong* nanos_ptr);
01682 
01683   /*   138 : Get Timer Information */
01684   jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv* env, 
01685     jvmtiTimerInfo* info_ptr);
01686 
01687   /*   139 : Get Time */
01688   jvmtiError (JNICALL *GetTime) (jvmtiEnv* env, 
01689     jlong* nanos_ptr);
01690 
01691   /*   140 : Get Potential Capabilities */
01692   jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv* env, 
01693     jvmtiCapabilities* capabilities_ptr);
01694 
01695   /*   141 :  RESERVED */
01696   void *reserved141;
01697 
01698   /*   142 : Add Capabilities */
01699   jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv* env, 
01700     const jvmtiCapabilities* capabilities_ptr);
01701 
01702   /*   143 : Relinquish Capabilities */
01703   jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env, 
01704     const jvmtiCapabilities* capabilities_ptr);
01705 
01706   /*   144 : Get Available Processors */
01707   jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env, 
01708     jint* processor_count_ptr);
01709 
01710   /*   145 : Get Class Version Numbers */
01711   jvmtiError (JNICALL *GetClassVersionNumbers) (jvmtiEnv* env, 
01712     jclass klass, 
01713     jint* minor_version_ptr, 
01714     jint* major_version_ptr);
01715 
01716   /*   146 : Get Constant Pool */
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   /*   147 : Get Environment Local Storage */
01724   jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env, 
01725     void** data_ptr);
01726 
01727   /*   148 : Set Environment Local Storage */
01728   jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env, 
01729     const void* data);
01730 
01731   /*   149 : Add To Bootstrap Class Loader Search */
01732   jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env, 
01733     const char* segment);
01734 
01735   /*   150 : Set Verbose Flag */
01736   jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env, 
01737     jvmtiVerboseFlag flag, 
01738     jboolean value);
01739 
01740   /*   151 : Add To System Class Loader Search */
01741   jvmtiError (JNICALL *AddToSystemClassLoaderSearch) (jvmtiEnv* env, 
01742     const char* segment);
01743 
01744   /*   152 : Retransform Classes */
01745   jvmtiError (JNICALL *RetransformClasses) (jvmtiEnv* env, 
01746     jint class_count, 
01747     const jclass* classes);
01748 
01749   /*   153 : Get Owned Monitor Stack Depth Info */
01750   jvmtiError (JNICALL *GetOwnedMonitorStackDepthInfo) (jvmtiEnv* env, 
01751     jthread thread, 
01752     jint* monitor_info_count_ptr, 
01753     jvmtiMonitorStackDepthInfo** monitor_info_ptr);
01754 
01755   /*   154 : Get Object Size */
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 /* __cplusplus */
02496 };
02497 
02498 
02499 #ifdef __cplusplus
02500 } /* extern "C" */
02501 #endif /* __cplusplus */
02502 
02503 #endif /* !_JAVA_JVMTI_H_ */
02504 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines