Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/javavm/export/jvmti.h
38813 views
/*1* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425/* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */262728/* Include file for the Java(tm) Virtual Machine Tool Interface */2930#ifndef _JAVA_JVMTI_H_31#define _JAVA_JVMTI_H_3233#include "jni.h"3435#ifdef __cplusplus36extern "C" {37#endif3839enum {40JVMTI_VERSION_1 = 0x30010000,41JVMTI_VERSION_1_0 = 0x30010000,42JVMTI_VERSION_1_1 = 0x30010100,43JVMTI_VERSION_1_2 = 0x30010200,4445JVMTI_VERSION = 0x30000000 + (1 * 0x10000) + (2 * 0x100) + 1 /* version: 1.2.1 */46};4748JNIEXPORT jint JNICALL49Agent_OnLoad(JavaVM *vm, char *options, void *reserved);5051JNIEXPORT jint JNICALL52Agent_OnAttach(JavaVM* vm, char* options, void* reserved);5354JNIEXPORT void JNICALL55Agent_OnUnload(JavaVM *vm);5657/* Forward declaration of the environment */5859struct _jvmtiEnv;6061struct jvmtiInterface_1_;6263#ifdef __cplusplus64typedef _jvmtiEnv jvmtiEnv;65#else66typedef const struct jvmtiInterface_1_ *jvmtiEnv;67#endif /* __cplusplus */6869/* Derived Base Types */7071typedef jobject jthread;72typedef jobject jthreadGroup;73typedef jlong jlocation;74struct _jrawMonitorID;75typedef struct _jrawMonitorID *jrawMonitorID;76typedef struct JNINativeInterface_ jniNativeInterface;7778/* Constants */798081/* Thread State Flags */8283enum {84JVMTI_THREAD_STATE_ALIVE = 0x0001,85JVMTI_THREAD_STATE_TERMINATED = 0x0002,86JVMTI_THREAD_STATE_RUNNABLE = 0x0004,87JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400,88JVMTI_THREAD_STATE_WAITING = 0x0080,89JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010,90JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020,91JVMTI_THREAD_STATE_SLEEPING = 0x0040,92JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100,93JVMTI_THREAD_STATE_PARKED = 0x0200,94JVMTI_THREAD_STATE_SUSPENDED = 0x100000,95JVMTI_THREAD_STATE_INTERRUPTED = 0x200000,96JVMTI_THREAD_STATE_IN_NATIVE = 0x400000,97JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000,98JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000,99JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000100};101102/* java.lang.Thread.State Conversion Masks */103104enum {105JVMTI_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,106JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0,107JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED,108JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE,109JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER,110JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY,111JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT112};113114/* Thread Priority Constants */115116enum {117JVMTI_THREAD_MIN_PRIORITY = 1,118JVMTI_THREAD_NORM_PRIORITY = 5,119JVMTI_THREAD_MAX_PRIORITY = 10120};121122/* Heap Filter Flags */123124enum {125JVMTI_HEAP_FILTER_TAGGED = 0x4,126JVMTI_HEAP_FILTER_UNTAGGED = 0x8,127JVMTI_HEAP_FILTER_CLASS_TAGGED = 0x10,128JVMTI_HEAP_FILTER_CLASS_UNTAGGED = 0x20129};130131/* Heap Visit Control Flags */132133enum {134JVMTI_VISIT_OBJECTS = 0x100,135JVMTI_VISIT_ABORT = 0x8000136};137138/* Heap Reference Enumeration */139140typedef enum {141JVMTI_HEAP_REFERENCE_CLASS = 1,142JVMTI_HEAP_REFERENCE_FIELD = 2,143JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT = 3,144JVMTI_HEAP_REFERENCE_CLASS_LOADER = 4,145JVMTI_HEAP_REFERENCE_SIGNERS = 5,146JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN = 6,147JVMTI_HEAP_REFERENCE_INTERFACE = 7,148JVMTI_HEAP_REFERENCE_STATIC_FIELD = 8,149JVMTI_HEAP_REFERENCE_CONSTANT_POOL = 9,150JVMTI_HEAP_REFERENCE_SUPERCLASS = 10,151JVMTI_HEAP_REFERENCE_JNI_GLOBAL = 21,152JVMTI_HEAP_REFERENCE_SYSTEM_CLASS = 22,153JVMTI_HEAP_REFERENCE_MONITOR = 23,154JVMTI_HEAP_REFERENCE_STACK_LOCAL = 24,155JVMTI_HEAP_REFERENCE_JNI_LOCAL = 25,156JVMTI_HEAP_REFERENCE_THREAD = 26,157JVMTI_HEAP_REFERENCE_OTHER = 27158} jvmtiHeapReferenceKind;159160/* Primitive Type Enumeration */161162typedef enum {163JVMTI_PRIMITIVE_TYPE_BOOLEAN = 90,164JVMTI_PRIMITIVE_TYPE_BYTE = 66,165JVMTI_PRIMITIVE_TYPE_CHAR = 67,166JVMTI_PRIMITIVE_TYPE_SHORT = 83,167JVMTI_PRIMITIVE_TYPE_INT = 73,168JVMTI_PRIMITIVE_TYPE_LONG = 74,169JVMTI_PRIMITIVE_TYPE_FLOAT = 70,170JVMTI_PRIMITIVE_TYPE_DOUBLE = 68171} jvmtiPrimitiveType;172173/* Heap Object Filter Enumeration */174175typedef enum {176JVMTI_HEAP_OBJECT_TAGGED = 1,177JVMTI_HEAP_OBJECT_UNTAGGED = 2,178JVMTI_HEAP_OBJECT_EITHER = 3179} jvmtiHeapObjectFilter;180181/* Heap Root Kind Enumeration */182183typedef enum {184JVMTI_HEAP_ROOT_JNI_GLOBAL = 1,185JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2,186JVMTI_HEAP_ROOT_MONITOR = 3,187JVMTI_HEAP_ROOT_STACK_LOCAL = 4,188JVMTI_HEAP_ROOT_JNI_LOCAL = 5,189JVMTI_HEAP_ROOT_THREAD = 6,190JVMTI_HEAP_ROOT_OTHER = 7191} jvmtiHeapRootKind;192193/* Object Reference Enumeration */194195typedef enum {196JVMTI_REFERENCE_CLASS = 1,197JVMTI_REFERENCE_FIELD = 2,198JVMTI_REFERENCE_ARRAY_ELEMENT = 3,199JVMTI_REFERENCE_CLASS_LOADER = 4,200JVMTI_REFERENCE_SIGNERS = 5,201JVMTI_REFERENCE_PROTECTION_DOMAIN = 6,202JVMTI_REFERENCE_INTERFACE = 7,203JVMTI_REFERENCE_STATIC_FIELD = 8,204JVMTI_REFERENCE_CONSTANT_POOL = 9205} jvmtiObjectReferenceKind;206207/* Iteration Control Enumeration */208209typedef enum {210JVMTI_ITERATION_CONTINUE = 1,211JVMTI_ITERATION_IGNORE = 2,212JVMTI_ITERATION_ABORT = 0213} jvmtiIterationControl;214215/* Class Status Flags */216217enum {218JVMTI_CLASS_STATUS_VERIFIED = 1,219JVMTI_CLASS_STATUS_PREPARED = 2,220JVMTI_CLASS_STATUS_INITIALIZED = 4,221JVMTI_CLASS_STATUS_ERROR = 8,222JVMTI_CLASS_STATUS_ARRAY = 16,223JVMTI_CLASS_STATUS_PRIMITIVE = 32224};225226/* Event Enable/Disable */227228typedef enum {229JVMTI_ENABLE = 1,230JVMTI_DISABLE = 0231} jvmtiEventMode;232233/* Extension Function/Event Parameter Types */234235typedef enum {236JVMTI_TYPE_JBYTE = 101,237JVMTI_TYPE_JCHAR = 102,238JVMTI_TYPE_JSHORT = 103,239JVMTI_TYPE_JINT = 104,240JVMTI_TYPE_JLONG = 105,241JVMTI_TYPE_JFLOAT = 106,242JVMTI_TYPE_JDOUBLE = 107,243JVMTI_TYPE_JBOOLEAN = 108,244JVMTI_TYPE_JOBJECT = 109,245JVMTI_TYPE_JTHREAD = 110,246JVMTI_TYPE_JCLASS = 111,247JVMTI_TYPE_JVALUE = 112,248JVMTI_TYPE_JFIELDID = 113,249JVMTI_TYPE_JMETHODID = 114,250JVMTI_TYPE_CCHAR = 115,251JVMTI_TYPE_CVOID = 116,252JVMTI_TYPE_JNIENV = 117253} jvmtiParamTypes;254255/* Extension Function/Event Parameter Kinds */256257typedef enum {258JVMTI_KIND_IN = 91,259JVMTI_KIND_IN_PTR = 92,260JVMTI_KIND_IN_BUF = 93,261JVMTI_KIND_ALLOC_BUF = 94,262JVMTI_KIND_ALLOC_ALLOC_BUF = 95,263JVMTI_KIND_OUT = 96,264JVMTI_KIND_OUT_BUF = 97265} jvmtiParamKind;266267/* Timer Kinds */268269typedef enum {270JVMTI_TIMER_USER_CPU = 30,271JVMTI_TIMER_TOTAL_CPU = 31,272JVMTI_TIMER_ELAPSED = 32273} jvmtiTimerKind;274275/* Phases of execution */276277typedef enum {278JVMTI_PHASE_ONLOAD = 1,279JVMTI_PHASE_PRIMORDIAL = 2,280JVMTI_PHASE_START = 6,281JVMTI_PHASE_LIVE = 4,282JVMTI_PHASE_DEAD = 8283} jvmtiPhase;284285/* Version Interface Types */286287enum {288JVMTI_VERSION_INTERFACE_JNI = 0x00000000,289JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000290};291292/* Version Masks */293294enum {295JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000,296JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000,297JVMTI_VERSION_MASK_MINOR = 0x0000FF00,298JVMTI_VERSION_MASK_MICRO = 0x000000FF299};300301/* Version Shifts */302303enum {304JVMTI_VERSION_SHIFT_MAJOR = 16,305JVMTI_VERSION_SHIFT_MINOR = 8,306JVMTI_VERSION_SHIFT_MICRO = 0307};308309/* Verbose Flag Enumeration */310311typedef enum {312JVMTI_VERBOSE_OTHER = 0,313JVMTI_VERBOSE_GC = 1,314JVMTI_VERBOSE_CLASS = 2,315JVMTI_VERBOSE_JNI = 4316} jvmtiVerboseFlag;317318/* JLocation Format Enumeration */319320typedef enum {321JVMTI_JLOCATION_JVMBCI = 1,322JVMTI_JLOCATION_MACHINEPC = 2,323JVMTI_JLOCATION_OTHER = 0324} jvmtiJlocationFormat;325326/* Resource Exhaustion Flags */327328enum {329JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR = 0x0001,330JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP = 0x0002,331JVMTI_RESOURCE_EXHAUSTED_THREADS = 0x0004332};333334/* Errors */335336typedef enum {337JVMTI_ERROR_NONE = 0,338JVMTI_ERROR_INVALID_THREAD = 10,339JVMTI_ERROR_INVALID_THREAD_GROUP = 11,340JVMTI_ERROR_INVALID_PRIORITY = 12,341JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13,342JVMTI_ERROR_THREAD_SUSPENDED = 14,343JVMTI_ERROR_THREAD_NOT_ALIVE = 15,344JVMTI_ERROR_INVALID_OBJECT = 20,345JVMTI_ERROR_INVALID_CLASS = 21,346JVMTI_ERROR_CLASS_NOT_PREPARED = 22,347JVMTI_ERROR_INVALID_METHODID = 23,348JVMTI_ERROR_INVALID_LOCATION = 24,349JVMTI_ERROR_INVALID_FIELDID = 25,350JVMTI_ERROR_NO_MORE_FRAMES = 31,351JVMTI_ERROR_OPAQUE_FRAME = 32,352JVMTI_ERROR_TYPE_MISMATCH = 34,353JVMTI_ERROR_INVALID_SLOT = 35,354JVMTI_ERROR_DUPLICATE = 40,355JVMTI_ERROR_NOT_FOUND = 41,356JVMTI_ERROR_INVALID_MONITOR = 50,357JVMTI_ERROR_NOT_MONITOR_OWNER = 51,358JVMTI_ERROR_INTERRUPT = 52,359JVMTI_ERROR_INVALID_CLASS_FORMAT = 60,360JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61,361JVMTI_ERROR_FAILS_VERIFICATION = 62,362JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63,363JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64,364JVMTI_ERROR_INVALID_TYPESTATE = 65,365JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66,366JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67,367JVMTI_ERROR_UNSUPPORTED_VERSION = 68,368JVMTI_ERROR_NAMES_DONT_MATCH = 69,369JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70,370JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71,371JVMTI_ERROR_UNMODIFIABLE_CLASS = 79,372JVMTI_ERROR_NOT_AVAILABLE = 98,373JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99,374JVMTI_ERROR_NULL_POINTER = 100,375JVMTI_ERROR_ABSENT_INFORMATION = 101,376JVMTI_ERROR_INVALID_EVENT_TYPE = 102,377JVMTI_ERROR_ILLEGAL_ARGUMENT = 103,378JVMTI_ERROR_NATIVE_METHOD = 104,379JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED = 106,380JVMTI_ERROR_OUT_OF_MEMORY = 110,381JVMTI_ERROR_ACCESS_DENIED = 111,382JVMTI_ERROR_WRONG_PHASE = 112,383JVMTI_ERROR_INTERNAL = 113,384JVMTI_ERROR_UNATTACHED_THREAD = 115,385JVMTI_ERROR_INVALID_ENVIRONMENT = 116,386JVMTI_ERROR_MAX = 116387} jvmtiError;388389/* Event IDs */390391typedef enum {392JVMTI_MIN_EVENT_TYPE_VAL = 50,393JVMTI_EVENT_VM_INIT = 50,394JVMTI_EVENT_VM_DEATH = 51,395JVMTI_EVENT_THREAD_START = 52,396JVMTI_EVENT_THREAD_END = 53,397JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54,398JVMTI_EVENT_CLASS_LOAD = 55,399JVMTI_EVENT_CLASS_PREPARE = 56,400JVMTI_EVENT_VM_START = 57,401JVMTI_EVENT_EXCEPTION = 58,402JVMTI_EVENT_EXCEPTION_CATCH = 59,403JVMTI_EVENT_SINGLE_STEP = 60,404JVMTI_EVENT_FRAME_POP = 61,405JVMTI_EVENT_BREAKPOINT = 62,406JVMTI_EVENT_FIELD_ACCESS = 63,407JVMTI_EVENT_FIELD_MODIFICATION = 64,408JVMTI_EVENT_METHOD_ENTRY = 65,409JVMTI_EVENT_METHOD_EXIT = 66,410JVMTI_EVENT_NATIVE_METHOD_BIND = 67,411JVMTI_EVENT_COMPILED_METHOD_LOAD = 68,412JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69,413JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70,414JVMTI_EVENT_DATA_DUMP_REQUEST = 71,415JVMTI_EVENT_MONITOR_WAIT = 73,416JVMTI_EVENT_MONITOR_WAITED = 74,417JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75,418JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76,419JVMTI_EVENT_RESOURCE_EXHAUSTED = 80,420JVMTI_EVENT_GARBAGE_COLLECTION_START = 81,421JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82,422JVMTI_EVENT_OBJECT_FREE = 83,423JVMTI_EVENT_VM_OBJECT_ALLOC = 84,424JVMTI_MAX_EVENT_TYPE_VAL = 84425} jvmtiEvent;426427428/* Pre-Declarations */429struct _jvmtiThreadInfo;430typedef struct _jvmtiThreadInfo jvmtiThreadInfo;431struct _jvmtiMonitorStackDepthInfo;432typedef struct _jvmtiMonitorStackDepthInfo jvmtiMonitorStackDepthInfo;433struct _jvmtiThreadGroupInfo;434typedef struct _jvmtiThreadGroupInfo jvmtiThreadGroupInfo;435struct _jvmtiFrameInfo;436typedef struct _jvmtiFrameInfo jvmtiFrameInfo;437struct _jvmtiStackInfo;438typedef struct _jvmtiStackInfo jvmtiStackInfo;439struct _jvmtiHeapReferenceInfoField;440typedef struct _jvmtiHeapReferenceInfoField jvmtiHeapReferenceInfoField;441struct _jvmtiHeapReferenceInfoArray;442typedef struct _jvmtiHeapReferenceInfoArray jvmtiHeapReferenceInfoArray;443struct _jvmtiHeapReferenceInfoConstantPool;444typedef struct _jvmtiHeapReferenceInfoConstantPool jvmtiHeapReferenceInfoConstantPool;445struct _jvmtiHeapReferenceInfoStackLocal;446typedef struct _jvmtiHeapReferenceInfoStackLocal jvmtiHeapReferenceInfoStackLocal;447struct _jvmtiHeapReferenceInfoJniLocal;448typedef struct _jvmtiHeapReferenceInfoJniLocal jvmtiHeapReferenceInfoJniLocal;449struct _jvmtiHeapReferenceInfoReserved;450typedef struct _jvmtiHeapReferenceInfoReserved jvmtiHeapReferenceInfoReserved;451union _jvmtiHeapReferenceInfo;452typedef union _jvmtiHeapReferenceInfo jvmtiHeapReferenceInfo;453struct _jvmtiHeapCallbacks;454typedef struct _jvmtiHeapCallbacks jvmtiHeapCallbacks;455struct _jvmtiClassDefinition;456typedef struct _jvmtiClassDefinition jvmtiClassDefinition;457struct _jvmtiMonitorUsage;458typedef struct _jvmtiMonitorUsage jvmtiMonitorUsage;459struct _jvmtiLineNumberEntry;460typedef struct _jvmtiLineNumberEntry jvmtiLineNumberEntry;461struct _jvmtiLocalVariableEntry;462typedef struct _jvmtiLocalVariableEntry jvmtiLocalVariableEntry;463struct _jvmtiParamInfo;464typedef struct _jvmtiParamInfo jvmtiParamInfo;465struct _jvmtiExtensionFunctionInfo;466typedef struct _jvmtiExtensionFunctionInfo jvmtiExtensionFunctionInfo;467struct _jvmtiExtensionEventInfo;468typedef struct _jvmtiExtensionEventInfo jvmtiExtensionEventInfo;469struct _jvmtiTimerInfo;470typedef struct _jvmtiTimerInfo jvmtiTimerInfo;471struct _jvmtiAddrLocationMap;472typedef struct _jvmtiAddrLocationMap jvmtiAddrLocationMap;473474/* Function Types */475476typedef void (JNICALL *jvmtiStartFunction)477(jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg);478479typedef jint (JNICALL *jvmtiHeapIterationCallback)480(jlong class_tag, jlong size, jlong* tag_ptr, jint length, void* user_data);481482typedef jint (JNICALL *jvmtiHeapReferenceCallback)483(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);484485typedef jint (JNICALL *jvmtiPrimitiveFieldCallback)486(jvmtiHeapReferenceKind kind, const jvmtiHeapReferenceInfo* info, jlong object_class_tag, jlong* object_tag_ptr, jvalue value, jvmtiPrimitiveType value_type, void* user_data);487488typedef jint (JNICALL *jvmtiArrayPrimitiveValueCallback)489(jlong class_tag, jlong size, jlong* tag_ptr, jint element_count, jvmtiPrimitiveType element_type, const void* elements, void* user_data);490491typedef jint (JNICALL *jvmtiStringPrimitiveValueCallback)492(jlong class_tag, jlong size, jlong* tag_ptr, const jchar* value, jint value_length, void* user_data);493494typedef jint (JNICALL *jvmtiReservedCallback)495();496497typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback)498(jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);499500typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback)501(jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, void* user_data);502503typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback)504(jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_data);505506typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback)507(jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data);508509typedef jvmtiError (JNICALL *jvmtiExtensionFunction)510(jvmtiEnv* jvmti_env, ...);511512typedef void (JNICALL *jvmtiExtensionEvent)513(jvmtiEnv* jvmti_env, ...);514515516/* Structure Types */517struct _jvmtiThreadInfo {518char* name;519jint priority;520jboolean is_daemon;521jthreadGroup thread_group;522jobject context_class_loader;523};524struct _jvmtiMonitorStackDepthInfo {525jobject monitor;526jint stack_depth;527};528struct _jvmtiThreadGroupInfo {529jthreadGroup parent;530char* name;531jint max_priority;532jboolean is_daemon;533};534struct _jvmtiFrameInfo {535jmethodID method;536jlocation location;537};538struct _jvmtiStackInfo {539jthread thread;540jint state;541jvmtiFrameInfo* frame_buffer;542jint frame_count;543};544struct _jvmtiHeapReferenceInfoField {545jint index;546};547struct _jvmtiHeapReferenceInfoArray {548jint index;549};550struct _jvmtiHeapReferenceInfoConstantPool {551jint index;552};553struct _jvmtiHeapReferenceInfoStackLocal {554jlong thread_tag;555jlong thread_id;556jint depth;557jmethodID method;558jlocation location;559jint slot;560};561struct _jvmtiHeapReferenceInfoJniLocal {562jlong thread_tag;563jlong thread_id;564jint depth;565jmethodID method;566};567struct _jvmtiHeapReferenceInfoReserved {568jlong reserved1;569jlong reserved2;570jlong reserved3;571jlong reserved4;572jlong reserved5;573jlong reserved6;574jlong reserved7;575jlong reserved8;576};577union _jvmtiHeapReferenceInfo {578jvmtiHeapReferenceInfoField field;579jvmtiHeapReferenceInfoArray array;580jvmtiHeapReferenceInfoConstantPool constant_pool;581jvmtiHeapReferenceInfoStackLocal stack_local;582jvmtiHeapReferenceInfoJniLocal jni_local;583jvmtiHeapReferenceInfoReserved other;584};585struct _jvmtiHeapCallbacks {586jvmtiHeapIterationCallback heap_iteration_callback;587jvmtiHeapReferenceCallback heap_reference_callback;588jvmtiPrimitiveFieldCallback primitive_field_callback;589jvmtiArrayPrimitiveValueCallback array_primitive_value_callback;590jvmtiStringPrimitiveValueCallback string_primitive_value_callback;591jvmtiReservedCallback reserved5;592jvmtiReservedCallback reserved6;593jvmtiReservedCallback reserved7;594jvmtiReservedCallback reserved8;595jvmtiReservedCallback reserved9;596jvmtiReservedCallback reserved10;597jvmtiReservedCallback reserved11;598jvmtiReservedCallback reserved12;599jvmtiReservedCallback reserved13;600jvmtiReservedCallback reserved14;601jvmtiReservedCallback reserved15;602};603struct _jvmtiClassDefinition {604jclass klass;605jint class_byte_count;606const unsigned char* class_bytes;607};608struct _jvmtiMonitorUsage {609jthread owner;610jint entry_count;611jint waiter_count;612jthread* waiters;613jint notify_waiter_count;614jthread* notify_waiters;615};616struct _jvmtiLineNumberEntry {617jlocation start_location;618jint line_number;619};620struct _jvmtiLocalVariableEntry {621jlocation start_location;622jint length;623char* name;624char* signature;625char* generic_signature;626jint slot;627};628struct _jvmtiParamInfo {629char* name;630jvmtiParamKind kind;631jvmtiParamTypes base_type;632jboolean null_ok;633};634struct _jvmtiExtensionFunctionInfo {635jvmtiExtensionFunction func;636char* id;637char* short_description;638jint param_count;639jvmtiParamInfo* params;640jint error_count;641jvmtiError* errors;642};643struct _jvmtiExtensionEventInfo {644jint extension_event_index;645char* id;646char* short_description;647jint param_count;648jvmtiParamInfo* params;649};650struct _jvmtiTimerInfo {651jlong max_value;652jboolean may_skip_forward;653jboolean may_skip_backward;654jvmtiTimerKind kind;655jlong reserved1;656jlong reserved2;657};658struct _jvmtiAddrLocationMap {659const void* start_address;660jlocation location;661};662663typedef struct {664unsigned int can_tag_objects : 1;665unsigned int can_generate_field_modification_events : 1;666unsigned int can_generate_field_access_events : 1;667unsigned int can_get_bytecodes : 1;668unsigned int can_get_synthetic_attribute : 1;669unsigned int can_get_owned_monitor_info : 1;670unsigned int can_get_current_contended_monitor : 1;671unsigned int can_get_monitor_info : 1;672unsigned int can_pop_frame : 1;673unsigned int can_redefine_classes : 1;674unsigned int can_signal_thread : 1;675unsigned int can_get_source_file_name : 1;676unsigned int can_get_line_numbers : 1;677unsigned int can_get_source_debug_extension : 1;678unsigned int can_access_local_variables : 1;679unsigned int can_maintain_original_method_order : 1;680unsigned int can_generate_single_step_events : 1;681unsigned int can_generate_exception_events : 1;682unsigned int can_generate_frame_pop_events : 1;683unsigned int can_generate_breakpoint_events : 1;684unsigned int can_suspend : 1;685unsigned int can_redefine_any_class : 1;686unsigned int can_get_current_thread_cpu_time : 1;687unsigned int can_get_thread_cpu_time : 1;688unsigned int can_generate_method_entry_events : 1;689unsigned int can_generate_method_exit_events : 1;690unsigned int can_generate_all_class_hook_events : 1;691unsigned int can_generate_compiled_method_load_events : 1;692unsigned int can_generate_monitor_events : 1;693unsigned int can_generate_vm_object_alloc_events : 1;694unsigned int can_generate_native_method_bind_events : 1;695unsigned int can_generate_garbage_collection_events : 1;696unsigned int can_generate_object_free_events : 1;697unsigned int can_force_early_return : 1;698unsigned int can_get_owned_monitor_stack_depth_info : 1;699unsigned int can_get_constant_pool : 1;700unsigned int can_set_native_method_prefix : 1;701unsigned int can_retransform_classes : 1;702unsigned int can_retransform_any_class : 1;703unsigned int can_generate_resource_exhaustion_heap_events : 1;704unsigned int can_generate_resource_exhaustion_threads_events : 1;705unsigned int : 7;706unsigned int : 16;707unsigned int : 16;708unsigned int : 16;709unsigned int : 16;710unsigned int : 16;711} jvmtiCapabilities;712713714/* Event Definitions */715716typedef void (JNICALL *jvmtiEventReserved)(void);717718719typedef void (JNICALL *jvmtiEventBreakpoint)720(jvmtiEnv *jvmti_env,721JNIEnv* jni_env,722jthread thread,723jmethodID method,724jlocation location);725726typedef void (JNICALL *jvmtiEventClassFileLoadHook)727(jvmtiEnv *jvmti_env,728JNIEnv* jni_env,729jclass class_being_redefined,730jobject loader,731const char* name,732jobject protection_domain,733jint class_data_len,734const unsigned char* class_data,735jint* new_class_data_len,736unsigned char** new_class_data);737738typedef void (JNICALL *jvmtiEventClassLoad)739(jvmtiEnv *jvmti_env,740JNIEnv* jni_env,741jthread thread,742jclass klass);743744typedef void (JNICALL *jvmtiEventClassPrepare)745(jvmtiEnv *jvmti_env,746JNIEnv* jni_env,747jthread thread,748jclass klass);749750typedef void (JNICALL *jvmtiEventCompiledMethodLoad)751(jvmtiEnv *jvmti_env,752jmethodID method,753jint code_size,754const void* code_addr,755jint map_length,756const jvmtiAddrLocationMap* map,757const void* compile_info);758759typedef void (JNICALL *jvmtiEventCompiledMethodUnload)760(jvmtiEnv *jvmti_env,761jmethodID method,762const void* code_addr);763764typedef void (JNICALL *jvmtiEventDataDumpRequest)765(jvmtiEnv *jvmti_env);766767typedef void (JNICALL *jvmtiEventDynamicCodeGenerated)768(jvmtiEnv *jvmti_env,769const char* name,770const void* address,771jint length);772773typedef void (JNICALL *jvmtiEventException)774(jvmtiEnv *jvmti_env,775JNIEnv* jni_env,776jthread thread,777jmethodID method,778jlocation location,779jobject exception,780jmethodID catch_method,781jlocation catch_location);782783typedef void (JNICALL *jvmtiEventExceptionCatch)784(jvmtiEnv *jvmti_env,785JNIEnv* jni_env,786jthread thread,787jmethodID method,788jlocation location,789jobject exception);790791typedef void (JNICALL *jvmtiEventFieldAccess)792(jvmtiEnv *jvmti_env,793JNIEnv* jni_env,794jthread thread,795jmethodID method,796jlocation location,797jclass field_klass,798jobject object,799jfieldID field);800801typedef void (JNICALL *jvmtiEventFieldModification)802(jvmtiEnv *jvmti_env,803JNIEnv* jni_env,804jthread thread,805jmethodID method,806jlocation location,807jclass field_klass,808jobject object,809jfieldID field,810char signature_type,811jvalue new_value);812813typedef void (JNICALL *jvmtiEventFramePop)814(jvmtiEnv *jvmti_env,815JNIEnv* jni_env,816jthread thread,817jmethodID method,818jboolean was_popped_by_exception);819820typedef void (JNICALL *jvmtiEventGarbageCollectionFinish)821(jvmtiEnv *jvmti_env);822823typedef void (JNICALL *jvmtiEventGarbageCollectionStart)824(jvmtiEnv *jvmti_env);825826typedef void (JNICALL *jvmtiEventMethodEntry)827(jvmtiEnv *jvmti_env,828JNIEnv* jni_env,829jthread thread,830jmethodID method);831832typedef void (JNICALL *jvmtiEventMethodExit)833(jvmtiEnv *jvmti_env,834JNIEnv* jni_env,835jthread thread,836jmethodID method,837jboolean was_popped_by_exception,838jvalue return_value);839840typedef void (JNICALL *jvmtiEventMonitorContendedEnter)841(jvmtiEnv *jvmti_env,842JNIEnv* jni_env,843jthread thread,844jobject object);845846typedef void (JNICALL *jvmtiEventMonitorContendedEntered)847(jvmtiEnv *jvmti_env,848JNIEnv* jni_env,849jthread thread,850jobject object);851852typedef void (JNICALL *jvmtiEventMonitorWait)853(jvmtiEnv *jvmti_env,854JNIEnv* jni_env,855jthread thread,856jobject object,857jlong timeout);858859typedef void (JNICALL *jvmtiEventMonitorWaited)860(jvmtiEnv *jvmti_env,861JNIEnv* jni_env,862jthread thread,863jobject object,864jboolean timed_out);865866typedef void (JNICALL *jvmtiEventNativeMethodBind)867(jvmtiEnv *jvmti_env,868JNIEnv* jni_env,869jthread thread,870jmethodID method,871void* address,872void** new_address_ptr);873874typedef void (JNICALL *jvmtiEventObjectFree)875(jvmtiEnv *jvmti_env,876jlong tag);877878typedef void (JNICALL *jvmtiEventResourceExhausted)879(jvmtiEnv *jvmti_env,880JNIEnv* jni_env,881jint flags,882const void* reserved,883const char* description);884885typedef void (JNICALL *jvmtiEventSingleStep)886(jvmtiEnv *jvmti_env,887JNIEnv* jni_env,888jthread thread,889jmethodID method,890jlocation location);891892typedef void (JNICALL *jvmtiEventThreadEnd)893(jvmtiEnv *jvmti_env,894JNIEnv* jni_env,895jthread thread);896897typedef void (JNICALL *jvmtiEventThreadStart)898(jvmtiEnv *jvmti_env,899JNIEnv* jni_env,900jthread thread);901902typedef void (JNICALL *jvmtiEventVMDeath)903(jvmtiEnv *jvmti_env,904JNIEnv* jni_env);905906typedef void (JNICALL *jvmtiEventVMInit)907(jvmtiEnv *jvmti_env,908JNIEnv* jni_env,909jthread thread);910911typedef void (JNICALL *jvmtiEventVMObjectAlloc)912(jvmtiEnv *jvmti_env,913JNIEnv* jni_env,914jthread thread,915jobject object,916jclass object_klass,917jlong size);918919typedef void (JNICALL *jvmtiEventVMStart)920(jvmtiEnv *jvmti_env,921JNIEnv* jni_env);922923/* Event Callback Structure */924925typedef struct {926/* 50 : VM Initialization Event */927jvmtiEventVMInit VMInit;928/* 51 : VM Death Event */929jvmtiEventVMDeath VMDeath;930/* 52 : Thread Start */931jvmtiEventThreadStart ThreadStart;932/* 53 : Thread End */933jvmtiEventThreadEnd ThreadEnd;934/* 54 : Class File Load Hook */935jvmtiEventClassFileLoadHook ClassFileLoadHook;936/* 55 : Class Load */937jvmtiEventClassLoad ClassLoad;938/* 56 : Class Prepare */939jvmtiEventClassPrepare ClassPrepare;940/* 57 : VM Start Event */941jvmtiEventVMStart VMStart;942/* 58 : Exception */943jvmtiEventException Exception;944/* 59 : Exception Catch */945jvmtiEventExceptionCatch ExceptionCatch;946/* 60 : Single Step */947jvmtiEventSingleStep SingleStep;948/* 61 : Frame Pop */949jvmtiEventFramePop FramePop;950/* 62 : Breakpoint */951jvmtiEventBreakpoint Breakpoint;952/* 63 : Field Access */953jvmtiEventFieldAccess FieldAccess;954/* 64 : Field Modification */955jvmtiEventFieldModification FieldModification;956/* 65 : Method Entry */957jvmtiEventMethodEntry MethodEntry;958/* 66 : Method Exit */959jvmtiEventMethodExit MethodExit;960/* 67 : Native Method Bind */961jvmtiEventNativeMethodBind NativeMethodBind;962/* 68 : Compiled Method Load */963jvmtiEventCompiledMethodLoad CompiledMethodLoad;964/* 69 : Compiled Method Unload */965jvmtiEventCompiledMethodUnload CompiledMethodUnload;966/* 70 : Dynamic Code Generated */967jvmtiEventDynamicCodeGenerated DynamicCodeGenerated;968/* 71 : Data Dump Request */969jvmtiEventDataDumpRequest DataDumpRequest;970/* 72 */971jvmtiEventReserved reserved72;972/* 73 : Monitor Wait */973jvmtiEventMonitorWait MonitorWait;974/* 74 : Monitor Waited */975jvmtiEventMonitorWaited MonitorWaited;976/* 75 : Monitor Contended Enter */977jvmtiEventMonitorContendedEnter MonitorContendedEnter;978/* 76 : Monitor Contended Entered */979jvmtiEventMonitorContendedEntered MonitorContendedEntered;980/* 77 */981jvmtiEventReserved reserved77;982/* 78 */983jvmtiEventReserved reserved78;984/* 79 */985jvmtiEventReserved reserved79;986/* 80 : Resource Exhausted */987jvmtiEventResourceExhausted ResourceExhausted;988/* 81 : Garbage Collection Start */989jvmtiEventGarbageCollectionStart GarbageCollectionStart;990/* 82 : Garbage Collection Finish */991jvmtiEventGarbageCollectionFinish GarbageCollectionFinish;992/* 83 : Object Free */993jvmtiEventObjectFree ObjectFree;994/* 84 : VM Object Allocation */995jvmtiEventVMObjectAlloc VMObjectAlloc;996} jvmtiEventCallbacks;997998999/* Function Interface */10001001typedef struct jvmtiInterface_1_ {10021003/* 1 : RESERVED */1004void *reserved1;10051006/* 2 : Set Event Notification Mode */1007jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env,1008jvmtiEventMode mode,1009jvmtiEvent event_type,1010jthread event_thread,1011...);10121013/* 3 : RESERVED */1014void *reserved3;10151016/* 4 : Get All Threads */1017jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env,1018jint* threads_count_ptr,1019jthread** threads_ptr);10201021/* 5 : Suspend Thread */1022jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env,1023jthread thread);10241025/* 6 : Resume Thread */1026jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env,1027jthread thread);10281029/* 7 : Stop Thread */1030jvmtiError (JNICALL *StopThread) (jvmtiEnv* env,1031jthread thread,1032jobject exception);10331034/* 8 : Interrupt Thread */1035jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env,1036jthread thread);10371038/* 9 : Get Thread Info */1039jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env,1040jthread thread,1041jvmtiThreadInfo* info_ptr);10421043/* 10 : Get Owned Monitor Info */1044jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env,1045jthread thread,1046jint* owned_monitor_count_ptr,1047jobject** owned_monitors_ptr);10481049/* 11 : Get Current Contended Monitor */1050jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env,1051jthread thread,1052jobject* monitor_ptr);10531054/* 12 : Run Agent Thread */1055jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env,1056jthread thread,1057jvmtiStartFunction proc,1058const void* arg,1059jint priority);10601061/* 13 : Get Top Thread Groups */1062jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env,1063jint* group_count_ptr,1064jthreadGroup** groups_ptr);10651066/* 14 : Get Thread Group Info */1067jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env,1068jthreadGroup group,1069jvmtiThreadGroupInfo* info_ptr);10701071/* 15 : Get Thread Group Children */1072jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv* env,1073jthreadGroup group,1074jint* thread_count_ptr,1075jthread** threads_ptr,1076jint* group_count_ptr,1077jthreadGroup** groups_ptr);10781079/* 16 : Get Frame Count */1080jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env,1081jthread thread,1082jint* count_ptr);10831084/* 17 : Get Thread State */1085jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env,1086jthread thread,1087jint* thread_state_ptr);10881089/* 18 : Get Current Thread */1090jvmtiError (JNICALL *GetCurrentThread) (jvmtiEnv* env,1091jthread* thread_ptr);10921093/* 19 : Get Frame Location */1094jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env,1095jthread thread,1096jint depth,1097jmethodID* method_ptr,1098jlocation* location_ptr);10991100/* 20 : Notify Frame Pop */1101jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env,1102jthread thread,1103jint depth);11041105/* 21 : Get Local Variable - Object */1106jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env,1107jthread thread,1108jint depth,1109jint slot,1110jobject* value_ptr);11111112/* 22 : Get Local Variable - Int */1113jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env,1114jthread thread,1115jint depth,1116jint slot,1117jint* value_ptr);11181119/* 23 : Get Local Variable - Long */1120jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env,1121jthread thread,1122jint depth,1123jint slot,1124jlong* value_ptr);11251126/* 24 : Get Local Variable - Float */1127jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env,1128jthread thread,1129jint depth,1130jint slot,1131jfloat* value_ptr);11321133/* 25 : Get Local Variable - Double */1134jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env,1135jthread thread,1136jint depth,1137jint slot,1138jdouble* value_ptr);11391140/* 26 : Set Local Variable - Object */1141jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env,1142jthread thread,1143jint depth,1144jint slot,1145jobject value);11461147/* 27 : Set Local Variable - Int */1148jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env,1149jthread thread,1150jint depth,1151jint slot,1152jint value);11531154/* 28 : Set Local Variable - Long */1155jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env,1156jthread thread,1157jint depth,1158jint slot,1159jlong value);11601161/* 29 : Set Local Variable - Float */1162jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv* env,1163jthread thread,1164jint depth,1165jint slot,1166jfloat value);11671168/* 30 : Set Local Variable - Double */1169jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv* env,1170jthread thread,1171jint depth,1172jint slot,1173jdouble value);11741175/* 31 : Create Raw Monitor */1176jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv* env,1177const char* name,1178jrawMonitorID* monitor_ptr);11791180/* 32 : Destroy Raw Monitor */1181jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv* env,1182jrawMonitorID monitor);11831184/* 33 : Raw Monitor Enter */1185jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv* env,1186jrawMonitorID monitor);11871188/* 34 : Raw Monitor Exit */1189jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv* env,1190jrawMonitorID monitor);11911192/* 35 : Raw Monitor Wait */1193jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv* env,1194jrawMonitorID monitor,1195jlong millis);11961197/* 36 : Raw Monitor Notify */1198jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv* env,1199jrawMonitorID monitor);12001201/* 37 : Raw Monitor Notify All */1202jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv* env,1203jrawMonitorID monitor);12041205/* 38 : Set Breakpoint */1206jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv* env,1207jmethodID method,1208jlocation location);12091210/* 39 : Clear Breakpoint */1211jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv* env,1212jmethodID method,1213jlocation location);12141215/* 40 : RESERVED */1216void *reserved40;12171218/* 41 : Set Field Access Watch */1219jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv* env,1220jclass klass,1221jfieldID field);12221223/* 42 : Clear Field Access Watch */1224jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv* env,1225jclass klass,1226jfieldID field);12271228/* 43 : Set Field Modification Watch */1229jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env,1230jclass klass,1231jfieldID field);12321233/* 44 : Clear Field Modification Watch */1234jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env,1235jclass klass,1236jfieldID field);12371238/* 45 : Is Modifiable Class */1239jvmtiError (JNICALL *IsModifiableClass) (jvmtiEnv* env,1240jclass klass,1241jboolean* is_modifiable_class_ptr);12421243/* 46 : Allocate */1244jvmtiError (JNICALL *Allocate) (jvmtiEnv* env,1245jlong size,1246unsigned char** mem_ptr);12471248/* 47 : Deallocate */1249jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env,1250unsigned char* mem);12511252/* 48 : Get Class Signature */1253jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv* env,1254jclass klass,1255char** signature_ptr,1256char** generic_ptr);12571258/* 49 : Get Class Status */1259jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv* env,1260jclass klass,1261jint* status_ptr);12621263/* 50 : Get Source File Name */1264jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv* env,1265jclass klass,1266char** source_name_ptr);12671268/* 51 : Get Class Modifiers */1269jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv* env,1270jclass klass,1271jint* modifiers_ptr);12721273/* 52 : Get Class Methods */1274jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv* env,1275jclass klass,1276jint* method_count_ptr,1277jmethodID** methods_ptr);12781279/* 53 : Get Class Fields */1280jvmtiError (JNICALL *GetClassFields) (jvmtiEnv* env,1281jclass klass,1282jint* field_count_ptr,1283jfieldID** fields_ptr);12841285/* 54 : Get Implemented Interfaces */1286jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv* env,1287jclass klass,1288jint* interface_count_ptr,1289jclass** interfaces_ptr);12901291/* 55 : Is Interface */1292jvmtiError (JNICALL *IsInterface) (jvmtiEnv* env,1293jclass klass,1294jboolean* is_interface_ptr);12951296/* 56 : Is Array Class */1297jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv* env,1298jclass klass,1299jboolean* is_array_class_ptr);13001301/* 57 : Get Class Loader */1302jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv* env,1303jclass klass,1304jobject* classloader_ptr);13051306/* 58 : Get Object Hash Code */1307jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv* env,1308jobject object,1309jint* hash_code_ptr);13101311/* 59 : Get Object Monitor Usage */1312jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv* env,1313jobject object,1314jvmtiMonitorUsage* info_ptr);13151316/* 60 : Get Field Name (and Signature) */1317jvmtiError (JNICALL *GetFieldName) (jvmtiEnv* env,1318jclass klass,1319jfieldID field,1320char** name_ptr,1321char** signature_ptr,1322char** generic_ptr);13231324/* 61 : Get Field Declaring Class */1325jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv* env,1326jclass klass,1327jfieldID field,1328jclass* declaring_class_ptr);13291330/* 62 : Get Field Modifiers */1331jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv* env,1332jclass klass,1333jfieldID field,1334jint* modifiers_ptr);13351336/* 63 : Is Field Synthetic */1337jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv* env,1338jclass klass,1339jfieldID field,1340jboolean* is_synthetic_ptr);13411342/* 64 : Get Method Name (and Signature) */1343jvmtiError (JNICALL *GetMethodName) (jvmtiEnv* env,1344jmethodID method,1345char** name_ptr,1346char** signature_ptr,1347char** generic_ptr);13481349/* 65 : Get Method Declaring Class */1350jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv* env,1351jmethodID method,1352jclass* declaring_class_ptr);13531354/* 66 : Get Method Modifiers */1355jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv* env,1356jmethodID method,1357jint* modifiers_ptr);13581359/* 67 : RESERVED */1360void *reserved67;13611362/* 68 : Get Max Locals */1363jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv* env,1364jmethodID method,1365jint* max_ptr);13661367/* 69 : Get Arguments Size */1368jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv* env,1369jmethodID method,1370jint* size_ptr);13711372/* 70 : Get Line Number Table */1373jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv* env,1374jmethodID method,1375jint* entry_count_ptr,1376jvmtiLineNumberEntry** table_ptr);13771378/* 71 : Get Method Location */1379jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv* env,1380jmethodID method,1381jlocation* start_location_ptr,1382jlocation* end_location_ptr);13831384/* 72 : Get Local Variable Table */1385jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env,1386jmethodID method,1387jint* entry_count_ptr,1388jvmtiLocalVariableEntry** table_ptr);13891390/* 73 : Set Native Method Prefix */1391jvmtiError (JNICALL *SetNativeMethodPrefix) (jvmtiEnv* env,1392const char* prefix);13931394/* 74 : Set Native Method Prefixes */1395jvmtiError (JNICALL *SetNativeMethodPrefixes) (jvmtiEnv* env,1396jint prefix_count,1397char** prefixes);13981399/* 75 : Get Bytecodes */1400jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env,1401jmethodID method,1402jint* bytecode_count_ptr,1403unsigned char** bytecodes_ptr);14041405/* 76 : Is Method Native */1406jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env,1407jmethodID method,1408jboolean* is_native_ptr);14091410/* 77 : Is Method Synthetic */1411jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv* env,1412jmethodID method,1413jboolean* is_synthetic_ptr);14141415/* 78 : Get Loaded Classes */1416jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv* env,1417jint* class_count_ptr,1418jclass** classes_ptr);14191420/* 79 : Get Classloader Classes */1421jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env,1422jobject initiating_loader,1423jint* class_count_ptr,1424jclass** classes_ptr);14251426/* 80 : Pop Frame */1427jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env,1428jthread thread);14291430/* 81 : Force Early Return - Object */1431jvmtiError (JNICALL *ForceEarlyReturnObject) (jvmtiEnv* env,1432jthread thread,1433jobject value);14341435/* 82 : Force Early Return - Int */1436jvmtiError (JNICALL *ForceEarlyReturnInt) (jvmtiEnv* env,1437jthread thread,1438jint value);14391440/* 83 : Force Early Return - Long */1441jvmtiError (JNICALL *ForceEarlyReturnLong) (jvmtiEnv* env,1442jthread thread,1443jlong value);14441445/* 84 : Force Early Return - Float */1446jvmtiError (JNICALL *ForceEarlyReturnFloat) (jvmtiEnv* env,1447jthread thread,1448jfloat value);14491450/* 85 : Force Early Return - Double */1451jvmtiError (JNICALL *ForceEarlyReturnDouble) (jvmtiEnv* env,1452jthread thread,1453jdouble value);14541455/* 86 : Force Early Return - Void */1456jvmtiError (JNICALL *ForceEarlyReturnVoid) (jvmtiEnv* env,1457jthread thread);14581459/* 87 : Redefine Classes */1460jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env,1461jint class_count,1462const jvmtiClassDefinition* class_definitions);14631464/* 88 : Get Version Number */1465jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env,1466jint* version_ptr);14671468/* 89 : Get Capabilities */1469jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv* env,1470jvmtiCapabilities* capabilities_ptr);14711472/* 90 : Get Source Debug Extension */1473jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv* env,1474jclass klass,1475char** source_debug_extension_ptr);14761477/* 91 : Is Method Obsolete */1478jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv* env,1479jmethodID method,1480jboolean* is_obsolete_ptr);14811482/* 92 : Suspend Thread List */1483jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv* env,1484jint request_count,1485const jthread* request_list,1486jvmtiError* results);14871488/* 93 : Resume Thread List */1489jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv* env,1490jint request_count,1491const jthread* request_list,1492jvmtiError* results);14931494/* 94 : RESERVED */1495void *reserved94;14961497/* 95 : RESERVED */1498void *reserved95;14991500/* 96 : RESERVED */1501void *reserved96;15021503/* 97 : RESERVED */1504void *reserved97;15051506/* 98 : RESERVED */1507void *reserved98;15081509/* 99 : RESERVED */1510void *reserved99;15111512/* 100 : Get All Stack Traces */1513jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv* env,1514jint max_frame_count,1515jvmtiStackInfo** stack_info_ptr,1516jint* thread_count_ptr);15171518/* 101 : Get Thread List Stack Traces */1519jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv* env,1520jint thread_count,1521const jthread* thread_list,1522jint max_frame_count,1523jvmtiStackInfo** stack_info_ptr);15241525/* 102 : Get Thread Local Storage */1526jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv* env,1527jthread thread,1528void** data_ptr);15291530/* 103 : Set Thread Local Storage */1531jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv* env,1532jthread thread,1533const void* data);15341535/* 104 : Get Stack Trace */1536jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv* env,1537jthread thread,1538jint start_depth,1539jint max_frame_count,1540jvmtiFrameInfo* frame_buffer,1541jint* count_ptr);15421543/* 105 : RESERVED */1544void *reserved105;15451546/* 106 : Get Tag */1547jvmtiError (JNICALL *GetTag) (jvmtiEnv* env,1548jobject object,1549jlong* tag_ptr);15501551/* 107 : Set Tag */1552jvmtiError (JNICALL *SetTag) (jvmtiEnv* env,1553jobject object,1554jlong tag);15551556/* 108 : Force Garbage Collection */1557jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env);15581559/* 109 : Iterate Over Objects Reachable From Object */1560jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* env,1561jobject object,1562jvmtiObjectReferenceCallback object_reference_callback,1563const void* user_data);15641565/* 110 : Iterate Over Reachable Objects */1566jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env,1567jvmtiHeapRootCallback heap_root_callback,1568jvmtiStackReferenceCallback stack_ref_callback,1569jvmtiObjectReferenceCallback object_ref_callback,1570const void* user_data);15711572/* 111 : Iterate Over Heap */1573jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env,1574jvmtiHeapObjectFilter object_filter,1575jvmtiHeapObjectCallback heap_object_callback,1576const void* user_data);15771578/* 112 : Iterate Over Instances Of Class */1579jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env,1580jclass klass,1581jvmtiHeapObjectFilter object_filter,1582jvmtiHeapObjectCallback heap_object_callback,1583const void* user_data);15841585/* 113 : RESERVED */1586void *reserved113;15871588/* 114 : Get Objects With Tags */1589jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env,1590jint tag_count,1591const jlong* tags,1592jint* count_ptr,1593jobject** object_result_ptr,1594jlong** tag_result_ptr);15951596/* 115 : Follow References */1597jvmtiError (JNICALL *FollowReferences) (jvmtiEnv* env,1598jint heap_filter,1599jclass klass,1600jobject initial_object,1601const jvmtiHeapCallbacks* callbacks,1602const void* user_data);16031604/* 116 : Iterate Through Heap */1605jvmtiError (JNICALL *IterateThroughHeap) (jvmtiEnv* env,1606jint heap_filter,1607jclass klass,1608const jvmtiHeapCallbacks* callbacks,1609const void* user_data);16101611/* 117 : RESERVED */1612void *reserved117;16131614/* 118 : RESERVED */1615void *reserved118;16161617/* 119 : RESERVED */1618void *reserved119;16191620/* 120 : Set JNI Function Table */1621jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv* env,1622const jniNativeInterface* function_table);16231624/* 121 : Get JNI Function Table */1625jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv* env,1626jniNativeInterface** function_table);16271628/* 122 : Set Event Callbacks */1629jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv* env,1630const jvmtiEventCallbacks* callbacks,1631jint size_of_callbacks);16321633/* 123 : Generate Events */1634jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv* env,1635jvmtiEvent event_type);16361637/* 124 : Get Extension Functions */1638jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv* env,1639jint* extension_count_ptr,1640jvmtiExtensionFunctionInfo** extensions);16411642/* 125 : Get Extension Events */1643jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv* env,1644jint* extension_count_ptr,1645jvmtiExtensionEventInfo** extensions);16461647/* 126 : Set Extension Event Callback */1648jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv* env,1649jint extension_event_index,1650jvmtiExtensionEvent callback);16511652/* 127 : Dispose Environment */1653jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv* env);16541655/* 128 : Get Error Name */1656jvmtiError (JNICALL *GetErrorName) (jvmtiEnv* env,1657jvmtiError error,1658char** name_ptr);16591660/* 129 : Get JLocation Format */1661jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv* env,1662jvmtiJlocationFormat* format_ptr);16631664/* 130 : Get System Properties */1665jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv* env,1666jint* count_ptr,1667char*** property_ptr);16681669/* 131 : Get System Property */1670jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv* env,1671const char* property,1672char** value_ptr);16731674/* 132 : Set System Property */1675jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv* env,1676const char* property,1677const char* value);16781679/* 133 : Get Phase */1680jvmtiError (JNICALL *GetPhase) (jvmtiEnv* env,1681jvmtiPhase* phase_ptr);16821683/* 134 : Get Current Thread CPU Timer Information */1684jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv* env,1685jvmtiTimerInfo* info_ptr);16861687/* 135 : Get Current Thread CPU Time */1688jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv* env,1689jlong* nanos_ptr);16901691/* 136 : Get Thread CPU Timer Information */1692jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv* env,1693jvmtiTimerInfo* info_ptr);16941695/* 137 : Get Thread CPU Time */1696jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv* env,1697jthread thread,1698jlong* nanos_ptr);16991700/* 138 : Get Timer Information */1701jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv* env,1702jvmtiTimerInfo* info_ptr);17031704/* 139 : Get Time */1705jvmtiError (JNICALL *GetTime) (jvmtiEnv* env,1706jlong* nanos_ptr);17071708/* 140 : Get Potential Capabilities */1709jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv* env,1710jvmtiCapabilities* capabilities_ptr);17111712/* 141 : RESERVED */1713void *reserved141;17141715/* 142 : Add Capabilities */1716jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv* env,1717const jvmtiCapabilities* capabilities_ptr);17181719/* 143 : Relinquish Capabilities */1720jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env,1721const jvmtiCapabilities* capabilities_ptr);17221723/* 144 : Get Available Processors */1724jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env,1725jint* processor_count_ptr);17261727/* 145 : Get Class Version Numbers */1728jvmtiError (JNICALL *GetClassVersionNumbers) (jvmtiEnv* env,1729jclass klass,1730jint* minor_version_ptr,1731jint* major_version_ptr);17321733/* 146 : Get Constant Pool */1734jvmtiError (JNICALL *GetConstantPool) (jvmtiEnv* env,1735jclass klass,1736jint* constant_pool_count_ptr,1737jint* constant_pool_byte_count_ptr,1738unsigned char** constant_pool_bytes_ptr);17391740/* 147 : Get Environment Local Storage */1741jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env,1742void** data_ptr);17431744/* 148 : Set Environment Local Storage */1745jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env,1746const void* data);17471748/* 149 : Add To Bootstrap Class Loader Search */1749jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env,1750const char* segment);17511752/* 150 : Set Verbose Flag */1753jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env,1754jvmtiVerboseFlag flag,1755jboolean value);17561757/* 151 : Add To System Class Loader Search */1758jvmtiError (JNICALL *AddToSystemClassLoaderSearch) (jvmtiEnv* env,1759const char* segment);17601761/* 152 : Retransform Classes */1762jvmtiError (JNICALL *RetransformClasses) (jvmtiEnv* env,1763jint class_count,1764const jclass* classes);17651766/* 153 : Get Owned Monitor Stack Depth Info */1767jvmtiError (JNICALL *GetOwnedMonitorStackDepthInfo) (jvmtiEnv* env,1768jthread thread,1769jint* monitor_info_count_ptr,1770jvmtiMonitorStackDepthInfo** monitor_info_ptr);17711772/* 154 : Get Object Size */1773jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env,1774jobject object,1775jlong* size_ptr);17761777/* 155 : Get Local Instance */1778jvmtiError (JNICALL *GetLocalInstance) (jvmtiEnv* env,1779jthread thread,1780jint depth,1781jobject* value_ptr);17821783} jvmtiInterface_1;17841785struct _jvmtiEnv {1786const struct jvmtiInterface_1_ *functions;1787#ifdef __cplusplus178817891790jvmtiError Allocate(jlong size,1791unsigned char** mem_ptr) {1792return functions->Allocate(this, size, mem_ptr);1793}17941795jvmtiError Deallocate(unsigned char* mem) {1796return functions->Deallocate(this, mem);1797}17981799jvmtiError GetThreadState(jthread thread,1800jint* thread_state_ptr) {1801return functions->GetThreadState(this, thread, thread_state_ptr);1802}18031804jvmtiError GetCurrentThread(jthread* thread_ptr) {1805return functions->GetCurrentThread(this, thread_ptr);1806}18071808jvmtiError GetAllThreads(jint* threads_count_ptr,1809jthread** threads_ptr) {1810return functions->GetAllThreads(this, threads_count_ptr, threads_ptr);1811}18121813jvmtiError SuspendThread(jthread thread) {1814return functions->SuspendThread(this, thread);1815}18161817jvmtiError SuspendThreadList(jint request_count,1818const jthread* request_list,1819jvmtiError* results) {1820return functions->SuspendThreadList(this, request_count, request_list, results);1821}18221823jvmtiError ResumeThread(jthread thread) {1824return functions->ResumeThread(this, thread);1825}18261827jvmtiError ResumeThreadList(jint request_count,1828const jthread* request_list,1829jvmtiError* results) {1830return functions->ResumeThreadList(this, request_count, request_list, results);1831}18321833jvmtiError StopThread(jthread thread,1834jobject exception) {1835return functions->StopThread(this, thread, exception);1836}18371838jvmtiError InterruptThread(jthread thread) {1839return functions->InterruptThread(this, thread);1840}18411842jvmtiError GetThreadInfo(jthread thread,1843jvmtiThreadInfo* info_ptr) {1844return functions->GetThreadInfo(this, thread, info_ptr);1845}18461847jvmtiError GetOwnedMonitorInfo(jthread thread,1848jint* owned_monitor_count_ptr,1849jobject** owned_monitors_ptr) {1850return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count_ptr, owned_monitors_ptr);1851}18521853jvmtiError GetOwnedMonitorStackDepthInfo(jthread thread,1854jint* monitor_info_count_ptr,1855jvmtiMonitorStackDepthInfo** monitor_info_ptr) {1856return functions->GetOwnedMonitorStackDepthInfo(this, thread, monitor_info_count_ptr, monitor_info_ptr);1857}18581859jvmtiError GetCurrentContendedMonitor(jthread thread,1860jobject* monitor_ptr) {1861return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr);1862}18631864jvmtiError RunAgentThread(jthread thread,1865jvmtiStartFunction proc,1866const void* arg,1867jint priority) {1868return functions->RunAgentThread(this, thread, proc, arg, priority);1869}18701871jvmtiError SetThreadLocalStorage(jthread thread,1872const void* data) {1873return functions->SetThreadLocalStorage(this, thread, data);1874}18751876jvmtiError GetThreadLocalStorage(jthread thread,1877void** data_ptr) {1878return functions->GetThreadLocalStorage(this, thread, data_ptr);1879}18801881jvmtiError GetTopThreadGroups(jint* group_count_ptr,1882jthreadGroup** groups_ptr) {1883return functions->GetTopThreadGroups(this, group_count_ptr, groups_ptr);1884}18851886jvmtiError GetThreadGroupInfo(jthreadGroup group,1887jvmtiThreadGroupInfo* info_ptr) {1888return functions->GetThreadGroupInfo(this, group, info_ptr);1889}18901891jvmtiError GetThreadGroupChildren(jthreadGroup group,1892jint* thread_count_ptr,1893jthread** threads_ptr,1894jint* group_count_ptr,1895jthreadGroup** groups_ptr) {1896return functions->GetThreadGroupChildren(this, group, thread_count_ptr, threads_ptr, group_count_ptr, groups_ptr);1897}18981899jvmtiError GetStackTrace(jthread thread,1900jint start_depth,1901jint max_frame_count,1902jvmtiFrameInfo* frame_buffer,1903jint* count_ptr) {1904return functions->GetStackTrace(this, thread, start_depth, max_frame_count, frame_buffer, count_ptr);1905}19061907jvmtiError GetAllStackTraces(jint max_frame_count,1908jvmtiStackInfo** stack_info_ptr,1909jint* thread_count_ptr) {1910return functions->GetAllStackTraces(this, max_frame_count, stack_info_ptr, thread_count_ptr);1911}19121913jvmtiError GetThreadListStackTraces(jint thread_count,1914const jthread* thread_list,1915jint max_frame_count,1916jvmtiStackInfo** stack_info_ptr) {1917return functions->GetThreadListStackTraces(this, thread_count, thread_list, max_frame_count, stack_info_ptr);1918}19191920jvmtiError GetFrameCount(jthread thread,1921jint* count_ptr) {1922return functions->GetFrameCount(this, thread, count_ptr);1923}19241925jvmtiError PopFrame(jthread thread) {1926return functions->PopFrame(this, thread);1927}19281929jvmtiError GetFrameLocation(jthread thread,1930jint depth,1931jmethodID* method_ptr,1932jlocation* location_ptr) {1933return functions->GetFrameLocation(this, thread, depth, method_ptr, location_ptr);1934}19351936jvmtiError NotifyFramePop(jthread thread,1937jint depth) {1938return functions->NotifyFramePop(this, thread, depth);1939}19401941jvmtiError ForceEarlyReturnObject(jthread thread,1942jobject value) {1943return functions->ForceEarlyReturnObject(this, thread, value);1944}19451946jvmtiError ForceEarlyReturnInt(jthread thread,1947jint value) {1948return functions->ForceEarlyReturnInt(this, thread, value);1949}19501951jvmtiError ForceEarlyReturnLong(jthread thread,1952jlong value) {1953return functions->ForceEarlyReturnLong(this, thread, value);1954}19551956jvmtiError ForceEarlyReturnFloat(jthread thread,1957jfloat value) {1958return functions->ForceEarlyReturnFloat(this, thread, value);1959}19601961jvmtiError ForceEarlyReturnDouble(jthread thread,1962jdouble value) {1963return functions->ForceEarlyReturnDouble(this, thread, value);1964}19651966jvmtiError ForceEarlyReturnVoid(jthread thread) {1967return functions->ForceEarlyReturnVoid(this, thread);1968}19691970jvmtiError FollowReferences(jint heap_filter,1971jclass klass,1972jobject initial_object,1973const jvmtiHeapCallbacks* callbacks,1974const void* user_data) {1975return functions->FollowReferences(this, heap_filter, klass, initial_object, callbacks, user_data);1976}19771978jvmtiError IterateThroughHeap(jint heap_filter,1979jclass klass,1980const jvmtiHeapCallbacks* callbacks,1981const void* user_data) {1982return functions->IterateThroughHeap(this, heap_filter, klass, callbacks, user_data);1983}19841985jvmtiError GetTag(jobject object,1986jlong* tag_ptr) {1987return functions->GetTag(this, object, tag_ptr);1988}19891990jvmtiError SetTag(jobject object,1991jlong tag) {1992return functions->SetTag(this, object, tag);1993}19941995jvmtiError GetObjectsWithTags(jint tag_count,1996const jlong* tags,1997jint* count_ptr,1998jobject** object_result_ptr,1999jlong** tag_result_ptr) {2000return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr, object_result_ptr, tag_result_ptr);2001}20022003jvmtiError ForceGarbageCollection() {2004return functions->ForceGarbageCollection(this);2005}20062007jvmtiError IterateOverObjectsReachableFromObject(jobject object,2008jvmtiObjectReferenceCallback object_reference_callback,2009const void* user_data) {2010return functions->IterateOverObjectsReachableFromObject(this, object, object_reference_callback, user_data);2011}20122013jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback,2014jvmtiStackReferenceCallback stack_ref_callback,2015jvmtiObjectReferenceCallback object_ref_callback,2016const void* user_data) {2017return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data);2018}20192020jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter,2021jvmtiHeapObjectCallback heap_object_callback,2022const void* user_data) {2023return functions->IterateOverHeap(this, object_filter, heap_object_callback, user_data);2024}20252026jvmtiError IterateOverInstancesOfClass(jclass klass,2027jvmtiHeapObjectFilter object_filter,2028jvmtiHeapObjectCallback heap_object_callback,2029const void* user_data) {2030return functions->IterateOverInstancesOfClass(this, klass, object_filter, heap_object_callback, user_data);2031}20322033jvmtiError GetLocalObject(jthread thread,2034jint depth,2035jint slot,2036jobject* value_ptr) {2037return functions->GetLocalObject(this, thread, depth, slot, value_ptr);2038}20392040jvmtiError GetLocalInstance(jthread thread,2041jint depth,2042jobject* value_ptr) {2043return functions->GetLocalInstance(this, thread, depth, value_ptr);2044}20452046jvmtiError GetLocalInt(jthread thread,2047jint depth,2048jint slot,2049jint* value_ptr) {2050return functions->GetLocalInt(this, thread, depth, slot, value_ptr);2051}20522053jvmtiError GetLocalLong(jthread thread,2054jint depth,2055jint slot,2056jlong* value_ptr) {2057return functions->GetLocalLong(this, thread, depth, slot, value_ptr);2058}20592060jvmtiError GetLocalFloat(jthread thread,2061jint depth,2062jint slot,2063jfloat* value_ptr) {2064return functions->GetLocalFloat(this, thread, depth, slot, value_ptr);2065}20662067jvmtiError GetLocalDouble(jthread thread,2068jint depth,2069jint slot,2070jdouble* value_ptr) {2071return functions->GetLocalDouble(this, thread, depth, slot, value_ptr);2072}20732074jvmtiError SetLocalObject(jthread thread,2075jint depth,2076jint slot,2077jobject value) {2078return functions->SetLocalObject(this, thread, depth, slot, value);2079}20802081jvmtiError SetLocalInt(jthread thread,2082jint depth,2083jint slot,2084jint value) {2085return functions->SetLocalInt(this, thread, depth, slot, value);2086}20872088jvmtiError SetLocalLong(jthread thread,2089jint depth,2090jint slot,2091jlong value) {2092return functions->SetLocalLong(this, thread, depth, slot, value);2093}20942095jvmtiError SetLocalFloat(jthread thread,2096jint depth,2097jint slot,2098jfloat value) {2099return functions->SetLocalFloat(this, thread, depth, slot, value);2100}21012102jvmtiError SetLocalDouble(jthread thread,2103jint depth,2104jint slot,2105jdouble value) {2106return functions->SetLocalDouble(this, thread, depth, slot, value);2107}21082109jvmtiError SetBreakpoint(jmethodID method,2110jlocation location) {2111return functions->SetBreakpoint(this, method, location);2112}21132114jvmtiError ClearBreakpoint(jmethodID method,2115jlocation location) {2116return functions->ClearBreakpoint(this, method, location);2117}21182119jvmtiError SetFieldAccessWatch(jclass klass,2120jfieldID field) {2121return functions->SetFieldAccessWatch(this, klass, field);2122}21232124jvmtiError ClearFieldAccessWatch(jclass klass,2125jfieldID field) {2126return functions->ClearFieldAccessWatch(this, klass, field);2127}21282129jvmtiError SetFieldModificationWatch(jclass klass,2130jfieldID field) {2131return functions->SetFieldModificationWatch(this, klass, field);2132}21332134jvmtiError ClearFieldModificationWatch(jclass klass,2135jfieldID field) {2136return functions->ClearFieldModificationWatch(this, klass, field);2137}21382139jvmtiError GetLoadedClasses(jint* class_count_ptr,2140jclass** classes_ptr) {2141return functions->GetLoadedClasses(this, class_count_ptr, classes_ptr);2142}21432144jvmtiError GetClassLoaderClasses(jobject initiating_loader,2145jint* class_count_ptr,2146jclass** classes_ptr) {2147return functions->GetClassLoaderClasses(this, initiating_loader, class_count_ptr, classes_ptr);2148}21492150jvmtiError GetClassSignature(jclass klass,2151char** signature_ptr,2152char** generic_ptr) {2153return functions->GetClassSignature(this, klass, signature_ptr, generic_ptr);2154}21552156jvmtiError GetClassStatus(jclass klass,2157jint* status_ptr) {2158return functions->GetClassStatus(this, klass, status_ptr);2159}21602161jvmtiError GetSourceFileName(jclass klass,2162char** source_name_ptr) {2163return functions->GetSourceFileName(this, klass, source_name_ptr);2164}21652166jvmtiError GetClassModifiers(jclass klass,2167jint* modifiers_ptr) {2168return functions->GetClassModifiers(this, klass, modifiers_ptr);2169}21702171jvmtiError GetClassMethods(jclass klass,2172jint* method_count_ptr,2173jmethodID** methods_ptr) {2174return functions->GetClassMethods(this, klass, method_count_ptr, methods_ptr);2175}21762177jvmtiError GetClassFields(jclass klass,2178jint* field_count_ptr,2179jfieldID** fields_ptr) {2180return functions->GetClassFields(this, klass, field_count_ptr, fields_ptr);2181}21822183jvmtiError GetImplementedInterfaces(jclass klass,2184jint* interface_count_ptr,2185jclass** interfaces_ptr) {2186return functions->GetImplementedInterfaces(this, klass, interface_count_ptr, interfaces_ptr);2187}21882189jvmtiError GetClassVersionNumbers(jclass klass,2190jint* minor_version_ptr,2191jint* major_version_ptr) {2192return functions->GetClassVersionNumbers(this, klass, minor_version_ptr, major_version_ptr);2193}21942195jvmtiError GetConstantPool(jclass klass,2196jint* constant_pool_count_ptr,2197jint* constant_pool_byte_count_ptr,2198unsigned char** constant_pool_bytes_ptr) {2199return functions->GetConstantPool(this, klass, constant_pool_count_ptr, constant_pool_byte_count_ptr, constant_pool_bytes_ptr);2200}22012202jvmtiError IsInterface(jclass klass,2203jboolean* is_interface_ptr) {2204return functions->IsInterface(this, klass, is_interface_ptr);2205}22062207jvmtiError IsArrayClass(jclass klass,2208jboolean* is_array_class_ptr) {2209return functions->IsArrayClass(this, klass, is_array_class_ptr);2210}22112212jvmtiError IsModifiableClass(jclass klass,2213jboolean* is_modifiable_class_ptr) {2214return functions->IsModifiableClass(this, klass, is_modifiable_class_ptr);2215}22162217jvmtiError GetClassLoader(jclass klass,2218jobject* classloader_ptr) {2219return functions->GetClassLoader(this, klass, classloader_ptr);2220}22212222jvmtiError GetSourceDebugExtension(jclass klass,2223char** source_debug_extension_ptr) {2224return functions->GetSourceDebugExtension(this, klass, source_debug_extension_ptr);2225}22262227jvmtiError RetransformClasses(jint class_count,2228const jclass* classes) {2229return functions->RetransformClasses(this, class_count, classes);2230}22312232jvmtiError RedefineClasses(jint class_count,2233const jvmtiClassDefinition* class_definitions) {2234return functions->RedefineClasses(this, class_count, class_definitions);2235}22362237jvmtiError GetObjectSize(jobject object,2238jlong* size_ptr) {2239return functions->GetObjectSize(this, object, size_ptr);2240}22412242jvmtiError GetObjectHashCode(jobject object,2243jint* hash_code_ptr) {2244return functions->GetObjectHashCode(this, object, hash_code_ptr);2245}22462247jvmtiError GetObjectMonitorUsage(jobject object,2248jvmtiMonitorUsage* info_ptr) {2249return functions->GetObjectMonitorUsage(this, object, info_ptr);2250}22512252jvmtiError GetFieldName(jclass klass,2253jfieldID field,2254char** name_ptr,2255char** signature_ptr,2256char** generic_ptr) {2257return functions->GetFieldName(this, klass, field, name_ptr, signature_ptr, generic_ptr);2258}22592260jvmtiError GetFieldDeclaringClass(jclass klass,2261jfieldID field,2262jclass* declaring_class_ptr) {2263return functions->GetFieldDeclaringClass(this, klass, field, declaring_class_ptr);2264}22652266jvmtiError GetFieldModifiers(jclass klass,2267jfieldID field,2268jint* modifiers_ptr) {2269return functions->GetFieldModifiers(this, klass, field, modifiers_ptr);2270}22712272jvmtiError IsFieldSynthetic(jclass klass,2273jfieldID field,2274jboolean* is_synthetic_ptr) {2275return functions->IsFieldSynthetic(this, klass, field, is_synthetic_ptr);2276}22772278jvmtiError GetMethodName(jmethodID method,2279char** name_ptr,2280char** signature_ptr,2281char** generic_ptr) {2282return functions->GetMethodName(this, method, name_ptr, signature_ptr, generic_ptr);2283}22842285jvmtiError GetMethodDeclaringClass(jmethodID method,2286jclass* declaring_class_ptr) {2287return functions->GetMethodDeclaringClass(this, method, declaring_class_ptr);2288}22892290jvmtiError GetMethodModifiers(jmethodID method,2291jint* modifiers_ptr) {2292return functions->GetMethodModifiers(this, method, modifiers_ptr);2293}22942295jvmtiError GetMaxLocals(jmethodID method,2296jint* max_ptr) {2297return functions->GetMaxLocals(this, method, max_ptr);2298}22992300jvmtiError GetArgumentsSize(jmethodID method,2301jint* size_ptr) {2302return functions->GetArgumentsSize(this, method, size_ptr);2303}23042305jvmtiError GetLineNumberTable(jmethodID method,2306jint* entry_count_ptr,2307jvmtiLineNumberEntry** table_ptr) {2308return functions->GetLineNumberTable(this, method, entry_count_ptr, table_ptr);2309}23102311jvmtiError GetMethodLocation(jmethodID method,2312jlocation* start_location_ptr,2313jlocation* end_location_ptr) {2314return functions->GetMethodLocation(this, method, start_location_ptr, end_location_ptr);2315}23162317jvmtiError GetLocalVariableTable(jmethodID method,2318jint* entry_count_ptr,2319jvmtiLocalVariableEntry** table_ptr) {2320return functions->GetLocalVariableTable(this, method, entry_count_ptr, table_ptr);2321}23222323jvmtiError GetBytecodes(jmethodID method,2324jint* bytecode_count_ptr,2325unsigned char** bytecodes_ptr) {2326return functions->GetBytecodes(this, method, bytecode_count_ptr, bytecodes_ptr);2327}23282329jvmtiError IsMethodNative(jmethodID method,2330jboolean* is_native_ptr) {2331return functions->IsMethodNative(this, method, is_native_ptr);2332}23332334jvmtiError IsMethodSynthetic(jmethodID method,2335jboolean* is_synthetic_ptr) {2336return functions->IsMethodSynthetic(this, method, is_synthetic_ptr);2337}23382339jvmtiError IsMethodObsolete(jmethodID method,2340jboolean* is_obsolete_ptr) {2341return functions->IsMethodObsolete(this, method, is_obsolete_ptr);2342}23432344jvmtiError SetNativeMethodPrefix(const char* prefix) {2345return functions->SetNativeMethodPrefix(this, prefix);2346}23472348jvmtiError SetNativeMethodPrefixes(jint prefix_count,2349char** prefixes) {2350return functions->SetNativeMethodPrefixes(this, prefix_count, prefixes);2351}23522353jvmtiError CreateRawMonitor(const char* name,2354jrawMonitorID* monitor_ptr) {2355return functions->CreateRawMonitor(this, name, monitor_ptr);2356}23572358jvmtiError DestroyRawMonitor(jrawMonitorID monitor) {2359return functions->DestroyRawMonitor(this, monitor);2360}23612362jvmtiError RawMonitorEnter(jrawMonitorID monitor) {2363return functions->RawMonitorEnter(this, monitor);2364}23652366jvmtiError RawMonitorExit(jrawMonitorID monitor) {2367return functions->RawMonitorExit(this, monitor);2368}23692370jvmtiError RawMonitorWait(jrawMonitorID monitor,2371jlong millis) {2372return functions->RawMonitorWait(this, monitor, millis);2373}23742375jvmtiError RawMonitorNotify(jrawMonitorID monitor) {2376return functions->RawMonitorNotify(this, monitor);2377}23782379jvmtiError RawMonitorNotifyAll(jrawMonitorID monitor) {2380return functions->RawMonitorNotifyAll(this, monitor);2381}23822383jvmtiError SetJNIFunctionTable(const jniNativeInterface* function_table) {2384return functions->SetJNIFunctionTable(this, function_table);2385}23862387jvmtiError GetJNIFunctionTable(jniNativeInterface** function_table) {2388return functions->GetJNIFunctionTable(this, function_table);2389}23902391jvmtiError SetEventCallbacks(const jvmtiEventCallbacks* callbacks,2392jint size_of_callbacks) {2393return functions->SetEventCallbacks(this, callbacks, size_of_callbacks);2394}23952396jvmtiError SetEventNotificationMode(jvmtiEventMode mode,2397jvmtiEvent event_type,2398jthread event_thread,2399...) {2400return functions->SetEventNotificationMode(this, mode, event_type, event_thread);2401}24022403jvmtiError GenerateEvents(jvmtiEvent event_type) {2404return functions->GenerateEvents(this, event_type);2405}24062407jvmtiError GetExtensionFunctions(jint* extension_count_ptr,2408jvmtiExtensionFunctionInfo** extensions) {2409return functions->GetExtensionFunctions(this, extension_count_ptr, extensions);2410}24112412jvmtiError GetExtensionEvents(jint* extension_count_ptr,2413jvmtiExtensionEventInfo** extensions) {2414return functions->GetExtensionEvents(this, extension_count_ptr, extensions);2415}24162417jvmtiError SetExtensionEventCallback(jint extension_event_index,2418jvmtiExtensionEvent callback) {2419return functions->SetExtensionEventCallback(this, extension_event_index, callback);2420}24212422jvmtiError GetPotentialCapabilities(jvmtiCapabilities* capabilities_ptr) {2423return functions->GetPotentialCapabilities(this, capabilities_ptr);2424}24252426jvmtiError AddCapabilities(const jvmtiCapabilities* capabilities_ptr) {2427return functions->AddCapabilities(this, capabilities_ptr);2428}24292430jvmtiError RelinquishCapabilities(const jvmtiCapabilities* capabilities_ptr) {2431return functions->RelinquishCapabilities(this, capabilities_ptr);2432}24332434jvmtiError GetCapabilities(jvmtiCapabilities* capabilities_ptr) {2435return functions->GetCapabilities(this, capabilities_ptr);2436}24372438jvmtiError GetCurrentThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {2439return functions->GetCurrentThreadCpuTimerInfo(this, info_ptr);2440}24412442jvmtiError GetCurrentThreadCpuTime(jlong* nanos_ptr) {2443return functions->GetCurrentThreadCpuTime(this, nanos_ptr);2444}24452446jvmtiError GetThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) {2447return functions->GetThreadCpuTimerInfo(this, info_ptr);2448}24492450jvmtiError GetThreadCpuTime(jthread thread,2451jlong* nanos_ptr) {2452return functions->GetThreadCpuTime(this, thread, nanos_ptr);2453}24542455jvmtiError GetTimerInfo(jvmtiTimerInfo* info_ptr) {2456return functions->GetTimerInfo(this, info_ptr);2457}24582459jvmtiError GetTime(jlong* nanos_ptr) {2460return functions->GetTime(this, nanos_ptr);2461}24622463jvmtiError GetAvailableProcessors(jint* processor_count_ptr) {2464return functions->GetAvailableProcessors(this, processor_count_ptr);2465}24662467jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) {2468return functions->AddToBootstrapClassLoaderSearch(this, segment);2469}24702471jvmtiError AddToSystemClassLoaderSearch(const char* segment) {2472return functions->AddToSystemClassLoaderSearch(this, segment);2473}24742475jvmtiError GetSystemProperties(jint* count_ptr,2476char*** property_ptr) {2477return functions->GetSystemProperties(this, count_ptr, property_ptr);2478}24792480jvmtiError GetSystemProperty(const char* property,2481char** value_ptr) {2482return functions->GetSystemProperty(this, property, value_ptr);2483}24842485jvmtiError SetSystemProperty(const char* property,2486const char* value) {2487return functions->SetSystemProperty(this, property, value);2488}24892490jvmtiError GetPhase(jvmtiPhase* phase_ptr) {2491return functions->GetPhase(this, phase_ptr);2492}24932494jvmtiError DisposeEnvironment() {2495return functions->DisposeEnvironment(this);2496}24972498jvmtiError SetEnvironmentLocalStorage(const void* data) {2499return functions->SetEnvironmentLocalStorage(this, data);2500}25012502jvmtiError GetEnvironmentLocalStorage(void** data_ptr) {2503return functions->GetEnvironmentLocalStorage(this, data_ptr);2504}25052506jvmtiError GetVersionNumber(jint* version_ptr) {2507return functions->GetVersionNumber(this, version_ptr);2508}25092510jvmtiError GetErrorName(jvmtiError error,2511char** name_ptr) {2512return functions->GetErrorName(this, error, name_ptr);2513}25142515jvmtiError SetVerboseFlag(jvmtiVerboseFlag flag,2516jboolean value) {2517return functions->SetVerboseFlag(this, flag, value);2518}25192520jvmtiError GetJLocationFormat(jvmtiJlocationFormat* format_ptr) {2521return functions->GetJLocationFormat(this, format_ptr);2522}25232524#endif /* __cplusplus */2525};252625272528#ifdef __cplusplus2529} /* extern "C" */2530#endif /* __cplusplus */25312532#endif /* !_JAVA_JVMTI_H_ */2533253425352536