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