jpayne@69: /* jpayne@69: * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved. jpayne@69: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. jpayne@69: * jpayne@69: * This code is free software; you can redistribute it and/or modify it jpayne@69: * under the terms of the GNU General Public License version 2 only, as jpayne@69: * published by the Free Software Foundation. Oracle designates this jpayne@69: * particular file as subject to the "Classpath" exception as provided jpayne@69: * by Oracle in the LICENSE file that accompanied this code. jpayne@69: * jpayne@69: * This code is distributed in the hope that it will be useful, but WITHOUT jpayne@69: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or jpayne@69: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License jpayne@69: * version 2 for more details (a copy is included in the LICENSE file that jpayne@69: * accompanied this code). jpayne@69: * jpayne@69: * You should have received a copy of the GNU General Public License version jpayne@69: * 2 along with this work; if not, write to the Free Software Foundation, jpayne@69: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. jpayne@69: * jpayne@69: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA jpayne@69: * or visit www.oracle.com if you need additional information or have any jpayne@69: * questions. jpayne@69: */ jpayne@69: jpayne@69: /* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */ jpayne@69: jpayne@69: /* Include file for the Java(tm) Virtual Machine Tool Interface */ jpayne@69: jpayne@69: #ifndef _JAVA_JVMTI_H_ jpayne@69: #define _JAVA_JVMTI_H_ jpayne@69: jpayne@69: #include "jni.h" jpayne@69: jpayne@69: #ifdef __cplusplus jpayne@69: extern "C" { jpayne@69: #endif jpayne@69: jpayne@69: enum { jpayne@69: JVMTI_VERSION_1 = 0x30010000, jpayne@69: JVMTI_VERSION_1_0 = 0x30010000, jpayne@69: JVMTI_VERSION_1_1 = 0x30010100, jpayne@69: JVMTI_VERSION_1_2 = 0x30010200, jpayne@69: JVMTI_VERSION_9 = 0x30090000, jpayne@69: JVMTI_VERSION_11 = 0x300B0000, jpayne@69: jpayne@69: JVMTI_VERSION = 0x30000000 + (11 * 0x10000) + (0 * 0x100) + 0 /* version: 11.0.0 */ jpayne@69: }; jpayne@69: jpayne@69: JNIEXPORT jint JNICALL jpayne@69: Agent_OnLoad(JavaVM *vm, char *options, void *reserved); jpayne@69: jpayne@69: JNIEXPORT jint JNICALL jpayne@69: Agent_OnAttach(JavaVM* vm, char* options, void* reserved); jpayne@69: jpayne@69: JNIEXPORT void JNICALL jpayne@69: Agent_OnUnload(JavaVM *vm); jpayne@69: jpayne@69: /* Forward declaration of the environment */ jpayne@69: jpayne@69: struct _jvmtiEnv; jpayne@69: jpayne@69: struct jvmtiInterface_1_; jpayne@69: jpayne@69: #ifdef __cplusplus jpayne@69: typedef _jvmtiEnv jvmtiEnv; jpayne@69: #else jpayne@69: typedef const struct jvmtiInterface_1_ *jvmtiEnv; jpayne@69: #endif /* __cplusplus */ jpayne@69: jpayne@69: /* Derived Base Types */ jpayne@69: jpayne@69: typedef jobject jthread; jpayne@69: typedef jobject jthreadGroup; jpayne@69: typedef jlong jlocation; jpayne@69: struct _jrawMonitorID; jpayne@69: typedef struct _jrawMonitorID *jrawMonitorID; jpayne@69: typedef struct JNINativeInterface_ jniNativeInterface; jpayne@69: jpayne@69: /* Constants */ jpayne@69: jpayne@69: jpayne@69: /* Thread State Flags */ jpayne@69: jpayne@69: enum { jpayne@69: JVMTI_THREAD_STATE_ALIVE = 0x0001, jpayne@69: JVMTI_THREAD_STATE_TERMINATED = 0x0002, jpayne@69: JVMTI_THREAD_STATE_RUNNABLE = 0x0004, jpayne@69: JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400, jpayne@69: JVMTI_THREAD_STATE_WAITING = 0x0080, jpayne@69: JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010, jpayne@69: JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020, jpayne@69: JVMTI_THREAD_STATE_SLEEPING = 0x0040, jpayne@69: JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100, jpayne@69: JVMTI_THREAD_STATE_PARKED = 0x0200, jpayne@69: JVMTI_THREAD_STATE_SUSPENDED = 0x100000, jpayne@69: JVMTI_THREAD_STATE_INTERRUPTED = 0x200000, jpayne@69: JVMTI_THREAD_STATE_IN_NATIVE = 0x400000, jpayne@69: JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000, jpayne@69: JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000, jpayne@69: JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000 jpayne@69: }; jpayne@69: jpayne@69: /* java.lang.Thread.State Conversion Masks */ jpayne@69: jpayne@69: enum { jpayne@69: 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, jpayne@69: JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0, jpayne@69: JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED, jpayne@69: JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE, jpayne@69: JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER, jpayne@69: JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY, jpayne@69: JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT jpayne@69: }; jpayne@69: jpayne@69: /* Thread Priority Constants */ jpayne@69: jpayne@69: enum { jpayne@69: JVMTI_THREAD_MIN_PRIORITY = 1, jpayne@69: JVMTI_THREAD_NORM_PRIORITY = 5, jpayne@69: JVMTI_THREAD_MAX_PRIORITY = 10 jpayne@69: }; jpayne@69: jpayne@69: /* Heap Filter Flags */ jpayne@69: jpayne@69: enum { jpayne@69: JVMTI_HEAP_FILTER_TAGGED = 0x4, jpayne@69: JVMTI_HEAP_FILTER_UNTAGGED = 0x8, jpayne@69: JVMTI_HEAP_FILTER_CLASS_TAGGED = 0x10, jpayne@69: JVMTI_HEAP_FILTER_CLASS_UNTAGGED = 0x20 jpayne@69: }; jpayne@69: jpayne@69: /* Heap Visit Control Flags */ jpayne@69: jpayne@69: enum { jpayne@69: JVMTI_VISIT_OBJECTS = 0x100, jpayne@69: JVMTI_VISIT_ABORT = 0x8000 jpayne@69: }; jpayne@69: jpayne@69: /* Heap Reference Enumeration */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_HEAP_REFERENCE_CLASS = 1, jpayne@69: JVMTI_HEAP_REFERENCE_FIELD = 2, jpayne@69: JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT = 3, jpayne@69: JVMTI_HEAP_REFERENCE_CLASS_LOADER = 4, jpayne@69: JVMTI_HEAP_REFERENCE_SIGNERS = 5, jpayne@69: JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN = 6, jpayne@69: JVMTI_HEAP_REFERENCE_INTERFACE = 7, jpayne@69: JVMTI_HEAP_REFERENCE_STATIC_FIELD = 8, jpayne@69: JVMTI_HEAP_REFERENCE_CONSTANT_POOL = 9, jpayne@69: JVMTI_HEAP_REFERENCE_SUPERCLASS = 10, jpayne@69: JVMTI_HEAP_REFERENCE_JNI_GLOBAL = 21, jpayne@69: JVMTI_HEAP_REFERENCE_SYSTEM_CLASS = 22, jpayne@69: JVMTI_HEAP_REFERENCE_MONITOR = 23, jpayne@69: JVMTI_HEAP_REFERENCE_STACK_LOCAL = 24, jpayne@69: JVMTI_HEAP_REFERENCE_JNI_LOCAL = 25, jpayne@69: JVMTI_HEAP_REFERENCE_THREAD = 26, jpayne@69: JVMTI_HEAP_REFERENCE_OTHER = 27 jpayne@69: } jvmtiHeapReferenceKind; jpayne@69: jpayne@69: /* Primitive Type Enumeration */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_PRIMITIVE_TYPE_BOOLEAN = 90, jpayne@69: JVMTI_PRIMITIVE_TYPE_BYTE = 66, jpayne@69: JVMTI_PRIMITIVE_TYPE_CHAR = 67, jpayne@69: JVMTI_PRIMITIVE_TYPE_SHORT = 83, jpayne@69: JVMTI_PRIMITIVE_TYPE_INT = 73, jpayne@69: JVMTI_PRIMITIVE_TYPE_LONG = 74, jpayne@69: JVMTI_PRIMITIVE_TYPE_FLOAT = 70, jpayne@69: JVMTI_PRIMITIVE_TYPE_DOUBLE = 68 jpayne@69: } jvmtiPrimitiveType; jpayne@69: jpayne@69: /* Heap Object Filter Enumeration */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_HEAP_OBJECT_TAGGED = 1, jpayne@69: JVMTI_HEAP_OBJECT_UNTAGGED = 2, jpayne@69: JVMTI_HEAP_OBJECT_EITHER = 3 jpayne@69: } jvmtiHeapObjectFilter; jpayne@69: jpayne@69: /* Heap Root Kind Enumeration */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_HEAP_ROOT_JNI_GLOBAL = 1, jpayne@69: JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2, jpayne@69: JVMTI_HEAP_ROOT_MONITOR = 3, jpayne@69: JVMTI_HEAP_ROOT_STACK_LOCAL = 4, jpayne@69: JVMTI_HEAP_ROOT_JNI_LOCAL = 5, jpayne@69: JVMTI_HEAP_ROOT_THREAD = 6, jpayne@69: JVMTI_HEAP_ROOT_OTHER = 7 jpayne@69: } jvmtiHeapRootKind; jpayne@69: jpayne@69: /* Object Reference Enumeration */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_REFERENCE_CLASS = 1, jpayne@69: JVMTI_REFERENCE_FIELD = 2, jpayne@69: JVMTI_REFERENCE_ARRAY_ELEMENT = 3, jpayne@69: JVMTI_REFERENCE_CLASS_LOADER = 4, jpayne@69: JVMTI_REFERENCE_SIGNERS = 5, jpayne@69: JVMTI_REFERENCE_PROTECTION_DOMAIN = 6, jpayne@69: JVMTI_REFERENCE_INTERFACE = 7, jpayne@69: JVMTI_REFERENCE_STATIC_FIELD = 8, jpayne@69: JVMTI_REFERENCE_CONSTANT_POOL = 9 jpayne@69: } jvmtiObjectReferenceKind; jpayne@69: jpayne@69: /* Iteration Control Enumeration */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_ITERATION_CONTINUE = 1, jpayne@69: JVMTI_ITERATION_IGNORE = 2, jpayne@69: JVMTI_ITERATION_ABORT = 0 jpayne@69: } jvmtiIterationControl; jpayne@69: jpayne@69: /* Class Status Flags */ jpayne@69: jpayne@69: enum { jpayne@69: JVMTI_CLASS_STATUS_VERIFIED = 1, jpayne@69: JVMTI_CLASS_STATUS_PREPARED = 2, jpayne@69: JVMTI_CLASS_STATUS_INITIALIZED = 4, jpayne@69: JVMTI_CLASS_STATUS_ERROR = 8, jpayne@69: JVMTI_CLASS_STATUS_ARRAY = 16, jpayne@69: JVMTI_CLASS_STATUS_PRIMITIVE = 32 jpayne@69: }; jpayne@69: jpayne@69: /* Event Enable/Disable */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_ENABLE = 1, jpayne@69: JVMTI_DISABLE = 0 jpayne@69: } jvmtiEventMode; jpayne@69: jpayne@69: /* Extension Function/Event Parameter Types */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_TYPE_JBYTE = 101, jpayne@69: JVMTI_TYPE_JCHAR = 102, jpayne@69: JVMTI_TYPE_JSHORT = 103, jpayne@69: JVMTI_TYPE_JINT = 104, jpayne@69: JVMTI_TYPE_JLONG = 105, jpayne@69: JVMTI_TYPE_JFLOAT = 106, jpayne@69: JVMTI_TYPE_JDOUBLE = 107, jpayne@69: JVMTI_TYPE_JBOOLEAN = 108, jpayne@69: JVMTI_TYPE_JOBJECT = 109, jpayne@69: JVMTI_TYPE_JTHREAD = 110, jpayne@69: JVMTI_TYPE_JCLASS = 111, jpayne@69: JVMTI_TYPE_JVALUE = 112, jpayne@69: JVMTI_TYPE_JFIELDID = 113, jpayne@69: JVMTI_TYPE_JMETHODID = 114, jpayne@69: JVMTI_TYPE_CCHAR = 115, jpayne@69: JVMTI_TYPE_CVOID = 116, jpayne@69: JVMTI_TYPE_JNIENV = 117 jpayne@69: } jvmtiParamTypes; jpayne@69: jpayne@69: /* Extension Function/Event Parameter Kinds */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_KIND_IN = 91, jpayne@69: JVMTI_KIND_IN_PTR = 92, jpayne@69: JVMTI_KIND_IN_BUF = 93, jpayne@69: JVMTI_KIND_ALLOC_BUF = 94, jpayne@69: JVMTI_KIND_ALLOC_ALLOC_BUF = 95, jpayne@69: JVMTI_KIND_OUT = 96, jpayne@69: JVMTI_KIND_OUT_BUF = 97 jpayne@69: } jvmtiParamKind; jpayne@69: jpayne@69: /* Timer Kinds */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_TIMER_USER_CPU = 30, jpayne@69: JVMTI_TIMER_TOTAL_CPU = 31, jpayne@69: JVMTI_TIMER_ELAPSED = 32 jpayne@69: } jvmtiTimerKind; jpayne@69: jpayne@69: /* Phases of execution */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_PHASE_ONLOAD = 1, jpayne@69: JVMTI_PHASE_PRIMORDIAL = 2, jpayne@69: JVMTI_PHASE_START = 6, jpayne@69: JVMTI_PHASE_LIVE = 4, jpayne@69: JVMTI_PHASE_DEAD = 8 jpayne@69: } jvmtiPhase; jpayne@69: jpayne@69: /* Version Interface Types */ jpayne@69: jpayne@69: enum { jpayne@69: JVMTI_VERSION_INTERFACE_JNI = 0x00000000, jpayne@69: JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000 jpayne@69: }; jpayne@69: jpayne@69: /* Version Masks */ jpayne@69: jpayne@69: enum { jpayne@69: JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000, jpayne@69: JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000, jpayne@69: JVMTI_VERSION_MASK_MINOR = 0x0000FF00, jpayne@69: JVMTI_VERSION_MASK_MICRO = 0x000000FF jpayne@69: }; jpayne@69: jpayne@69: /* Version Shifts */ jpayne@69: jpayne@69: enum { jpayne@69: JVMTI_VERSION_SHIFT_MAJOR = 16, jpayne@69: JVMTI_VERSION_SHIFT_MINOR = 8, jpayne@69: JVMTI_VERSION_SHIFT_MICRO = 0 jpayne@69: }; jpayne@69: jpayne@69: /* Verbose Flag Enumeration */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_VERBOSE_OTHER = 0, jpayne@69: JVMTI_VERBOSE_GC = 1, jpayne@69: JVMTI_VERBOSE_CLASS = 2, jpayne@69: JVMTI_VERBOSE_JNI = 4 jpayne@69: } jvmtiVerboseFlag; jpayne@69: jpayne@69: /* JLocation Format Enumeration */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_JLOCATION_JVMBCI = 1, jpayne@69: JVMTI_JLOCATION_MACHINEPC = 2, jpayne@69: JVMTI_JLOCATION_OTHER = 0 jpayne@69: } jvmtiJlocationFormat; jpayne@69: jpayne@69: /* Resource Exhaustion Flags */ jpayne@69: jpayne@69: enum { jpayne@69: JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR = 0x0001, jpayne@69: JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP = 0x0002, jpayne@69: JVMTI_RESOURCE_EXHAUSTED_THREADS = 0x0004 jpayne@69: }; jpayne@69: jpayne@69: /* Errors */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_ERROR_NONE = 0, jpayne@69: JVMTI_ERROR_INVALID_THREAD = 10, jpayne@69: JVMTI_ERROR_INVALID_THREAD_GROUP = 11, jpayne@69: JVMTI_ERROR_INVALID_PRIORITY = 12, jpayne@69: JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13, jpayne@69: JVMTI_ERROR_THREAD_SUSPENDED = 14, jpayne@69: JVMTI_ERROR_THREAD_NOT_ALIVE = 15, jpayne@69: JVMTI_ERROR_INVALID_OBJECT = 20, jpayne@69: JVMTI_ERROR_INVALID_CLASS = 21, jpayne@69: JVMTI_ERROR_CLASS_NOT_PREPARED = 22, jpayne@69: JVMTI_ERROR_INVALID_METHODID = 23, jpayne@69: JVMTI_ERROR_INVALID_LOCATION = 24, jpayne@69: JVMTI_ERROR_INVALID_FIELDID = 25, jpayne@69: JVMTI_ERROR_INVALID_MODULE = 26, jpayne@69: JVMTI_ERROR_NO_MORE_FRAMES = 31, jpayne@69: JVMTI_ERROR_OPAQUE_FRAME = 32, jpayne@69: JVMTI_ERROR_TYPE_MISMATCH = 34, jpayne@69: JVMTI_ERROR_INVALID_SLOT = 35, jpayne@69: JVMTI_ERROR_DUPLICATE = 40, jpayne@69: JVMTI_ERROR_NOT_FOUND = 41, jpayne@69: JVMTI_ERROR_INVALID_MONITOR = 50, jpayne@69: JVMTI_ERROR_NOT_MONITOR_OWNER = 51, jpayne@69: JVMTI_ERROR_INTERRUPT = 52, jpayne@69: JVMTI_ERROR_INVALID_CLASS_FORMAT = 60, jpayne@69: JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61, jpayne@69: JVMTI_ERROR_FAILS_VERIFICATION = 62, jpayne@69: JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63, jpayne@69: JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64, jpayne@69: JVMTI_ERROR_INVALID_TYPESTATE = 65, jpayne@69: JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66, jpayne@69: JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67, jpayne@69: JVMTI_ERROR_UNSUPPORTED_VERSION = 68, jpayne@69: JVMTI_ERROR_NAMES_DONT_MATCH = 69, jpayne@69: JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70, jpayne@69: JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71, jpayne@69: JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_ATTRIBUTE_CHANGED = 72, jpayne@69: JVMTI_ERROR_UNMODIFIABLE_CLASS = 79, jpayne@69: JVMTI_ERROR_UNMODIFIABLE_MODULE = 80, jpayne@69: JVMTI_ERROR_NOT_AVAILABLE = 98, jpayne@69: JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99, jpayne@69: JVMTI_ERROR_NULL_POINTER = 100, jpayne@69: JVMTI_ERROR_ABSENT_INFORMATION = 101, jpayne@69: JVMTI_ERROR_INVALID_EVENT_TYPE = 102, jpayne@69: JVMTI_ERROR_ILLEGAL_ARGUMENT = 103, jpayne@69: JVMTI_ERROR_NATIVE_METHOD = 104, jpayne@69: JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED = 106, jpayne@69: JVMTI_ERROR_OUT_OF_MEMORY = 110, jpayne@69: JVMTI_ERROR_ACCESS_DENIED = 111, jpayne@69: JVMTI_ERROR_WRONG_PHASE = 112, jpayne@69: JVMTI_ERROR_INTERNAL = 113, jpayne@69: JVMTI_ERROR_UNATTACHED_THREAD = 115, jpayne@69: JVMTI_ERROR_INVALID_ENVIRONMENT = 116, jpayne@69: JVMTI_ERROR_MAX = 116 jpayne@69: } jvmtiError; jpayne@69: jpayne@69: /* Event IDs */ jpayne@69: jpayne@69: typedef enum { jpayne@69: JVMTI_MIN_EVENT_TYPE_VAL = 50, jpayne@69: JVMTI_EVENT_VM_INIT = 50, jpayne@69: JVMTI_EVENT_VM_DEATH = 51, jpayne@69: JVMTI_EVENT_THREAD_START = 52, jpayne@69: JVMTI_EVENT_THREAD_END = 53, jpayne@69: JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54, jpayne@69: JVMTI_EVENT_CLASS_LOAD = 55, jpayne@69: JVMTI_EVENT_CLASS_PREPARE = 56, jpayne@69: JVMTI_EVENT_VM_START = 57, jpayne@69: JVMTI_EVENT_EXCEPTION = 58, jpayne@69: JVMTI_EVENT_EXCEPTION_CATCH = 59, jpayne@69: JVMTI_EVENT_SINGLE_STEP = 60, jpayne@69: JVMTI_EVENT_FRAME_POP = 61, jpayne@69: JVMTI_EVENT_BREAKPOINT = 62, jpayne@69: JVMTI_EVENT_FIELD_ACCESS = 63, jpayne@69: JVMTI_EVENT_FIELD_MODIFICATION = 64, jpayne@69: JVMTI_EVENT_METHOD_ENTRY = 65, jpayne@69: JVMTI_EVENT_METHOD_EXIT = 66, jpayne@69: JVMTI_EVENT_NATIVE_METHOD_BIND = 67, jpayne@69: JVMTI_EVENT_COMPILED_METHOD_LOAD = 68, jpayne@69: JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69, jpayne@69: JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70, jpayne@69: JVMTI_EVENT_DATA_DUMP_REQUEST = 71, jpayne@69: JVMTI_EVENT_MONITOR_WAIT = 73, jpayne@69: JVMTI_EVENT_MONITOR_WAITED = 74, jpayne@69: JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75, jpayne@69: JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76, jpayne@69: JVMTI_EVENT_RESOURCE_EXHAUSTED = 80, jpayne@69: JVMTI_EVENT_GARBAGE_COLLECTION_START = 81, jpayne@69: JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82, jpayne@69: JVMTI_EVENT_OBJECT_FREE = 83, jpayne@69: JVMTI_EVENT_VM_OBJECT_ALLOC = 84, jpayne@69: JVMTI_EVENT_SAMPLED_OBJECT_ALLOC = 86, jpayne@69: JVMTI_MAX_EVENT_TYPE_VAL = 86 jpayne@69: } jvmtiEvent; jpayne@69: jpayne@69: jpayne@69: /* Pre-Declarations */ jpayne@69: struct _jvmtiThreadInfo; jpayne@69: typedef struct _jvmtiThreadInfo jvmtiThreadInfo; jpayne@69: struct _jvmtiMonitorStackDepthInfo; jpayne@69: typedef struct _jvmtiMonitorStackDepthInfo jvmtiMonitorStackDepthInfo; jpayne@69: struct _jvmtiThreadGroupInfo; jpayne@69: typedef struct _jvmtiThreadGroupInfo jvmtiThreadGroupInfo; jpayne@69: struct _jvmtiFrameInfo; jpayne@69: typedef struct _jvmtiFrameInfo jvmtiFrameInfo; jpayne@69: struct _jvmtiStackInfo; jpayne@69: typedef struct _jvmtiStackInfo jvmtiStackInfo; jpayne@69: struct _jvmtiHeapReferenceInfoField; jpayne@69: typedef struct _jvmtiHeapReferenceInfoField jvmtiHeapReferenceInfoField; jpayne@69: struct _jvmtiHeapReferenceInfoArray; jpayne@69: typedef struct _jvmtiHeapReferenceInfoArray jvmtiHeapReferenceInfoArray; jpayne@69: struct _jvmtiHeapReferenceInfoConstantPool; jpayne@69: typedef struct _jvmtiHeapReferenceInfoConstantPool jvmtiHeapReferenceInfoConstantPool; jpayne@69: struct _jvmtiHeapReferenceInfoStackLocal; jpayne@69: typedef struct _jvmtiHeapReferenceInfoStackLocal jvmtiHeapReferenceInfoStackLocal; jpayne@69: struct _jvmtiHeapReferenceInfoJniLocal; jpayne@69: typedef struct _jvmtiHeapReferenceInfoJniLocal jvmtiHeapReferenceInfoJniLocal; jpayne@69: struct _jvmtiHeapReferenceInfoReserved; jpayne@69: typedef struct _jvmtiHeapReferenceInfoReserved jvmtiHeapReferenceInfoReserved; jpayne@69: union _jvmtiHeapReferenceInfo; jpayne@69: typedef union _jvmtiHeapReferenceInfo jvmtiHeapReferenceInfo; jpayne@69: struct _jvmtiHeapCallbacks; jpayne@69: typedef struct _jvmtiHeapCallbacks jvmtiHeapCallbacks; jpayne@69: struct _jvmtiClassDefinition; jpayne@69: typedef struct _jvmtiClassDefinition jvmtiClassDefinition; jpayne@69: struct _jvmtiMonitorUsage; jpayne@69: typedef struct _jvmtiMonitorUsage jvmtiMonitorUsage; jpayne@69: struct _jvmtiLineNumberEntry; jpayne@69: typedef struct _jvmtiLineNumberEntry jvmtiLineNumberEntry; jpayne@69: struct _jvmtiLocalVariableEntry; jpayne@69: typedef struct _jvmtiLocalVariableEntry jvmtiLocalVariableEntry; jpayne@69: struct _jvmtiParamInfo; jpayne@69: typedef struct _jvmtiParamInfo jvmtiParamInfo; jpayne@69: struct _jvmtiExtensionFunctionInfo; jpayne@69: typedef struct _jvmtiExtensionFunctionInfo jvmtiExtensionFunctionInfo; jpayne@69: struct _jvmtiExtensionEventInfo; jpayne@69: typedef struct _jvmtiExtensionEventInfo jvmtiExtensionEventInfo; jpayne@69: struct _jvmtiTimerInfo; jpayne@69: typedef struct _jvmtiTimerInfo jvmtiTimerInfo; jpayne@69: struct _jvmtiAddrLocationMap; jpayne@69: typedef struct _jvmtiAddrLocationMap jvmtiAddrLocationMap; jpayne@69: jpayne@69: /* Function Types */ jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiStartFunction) jpayne@69: (jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg); jpayne@69: jpayne@69: typedef jint (JNICALL *jvmtiHeapIterationCallback) jpayne@69: (jlong class_tag, jlong size, jlong* tag_ptr, jint length, void* user_data); jpayne@69: jpayne@69: typedef jint (JNICALL *jvmtiHeapReferenceCallback) jpayne@69: (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); jpayne@69: jpayne@69: typedef jint (JNICALL *jvmtiPrimitiveFieldCallback) jpayne@69: (jvmtiHeapReferenceKind kind, const jvmtiHeapReferenceInfo* info, jlong object_class_tag, jlong* object_tag_ptr, jvalue value, jvmtiPrimitiveType value_type, void* user_data); jpayne@69: jpayne@69: typedef jint (JNICALL *jvmtiArrayPrimitiveValueCallback) jpayne@69: (jlong class_tag, jlong size, jlong* tag_ptr, jint element_count, jvmtiPrimitiveType element_type, const void* elements, void* user_data); jpayne@69: jpayne@69: typedef jint (JNICALL *jvmtiStringPrimitiveValueCallback) jpayne@69: (jlong class_tag, jlong size, jlong* tag_ptr, const jchar* value, jint value_length, void* user_data); jpayne@69: jpayne@69: typedef jint (JNICALL *jvmtiReservedCallback) jpayne@69: (); jpayne@69: jpayne@69: typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback) jpayne@69: (jlong class_tag, jlong size, jlong* tag_ptr, void* user_data); jpayne@69: jpayne@69: typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback) jpayne@69: (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, void* user_data); jpayne@69: jpayne@69: typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback) jpayne@69: (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_data); jpayne@69: jpayne@69: typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback) jpayne@69: (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data); jpayne@69: jpayne@69: typedef jvmtiError (JNICALL *jvmtiExtensionFunction) jpayne@69: (jvmtiEnv* jvmti_env, ...); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiExtensionEvent) jpayne@69: (jvmtiEnv* jvmti_env, ...); jpayne@69: jpayne@69: jpayne@69: /* Structure Types */ jpayne@69: struct _jvmtiThreadInfo { jpayne@69: char* name; jpayne@69: jint priority; jpayne@69: jboolean is_daemon; jpayne@69: jthreadGroup thread_group; jpayne@69: jobject context_class_loader; jpayne@69: }; jpayne@69: struct _jvmtiMonitorStackDepthInfo { jpayne@69: jobject monitor; jpayne@69: jint stack_depth; jpayne@69: }; jpayne@69: struct _jvmtiThreadGroupInfo { jpayne@69: jthreadGroup parent; jpayne@69: char* name; jpayne@69: jint max_priority; jpayne@69: jboolean is_daemon; jpayne@69: }; jpayne@69: struct _jvmtiFrameInfo { jpayne@69: jmethodID method; jpayne@69: jlocation location; jpayne@69: }; jpayne@69: struct _jvmtiStackInfo { jpayne@69: jthread thread; jpayne@69: jint state; jpayne@69: jvmtiFrameInfo* frame_buffer; jpayne@69: jint frame_count; jpayne@69: }; jpayne@69: struct _jvmtiHeapReferenceInfoField { jpayne@69: jint index; jpayne@69: }; jpayne@69: struct _jvmtiHeapReferenceInfoArray { jpayne@69: jint index; jpayne@69: }; jpayne@69: struct _jvmtiHeapReferenceInfoConstantPool { jpayne@69: jint index; jpayne@69: }; jpayne@69: struct _jvmtiHeapReferenceInfoStackLocal { jpayne@69: jlong thread_tag; jpayne@69: jlong thread_id; jpayne@69: jint depth; jpayne@69: jmethodID method; jpayne@69: jlocation location; jpayne@69: jint slot; jpayne@69: }; jpayne@69: struct _jvmtiHeapReferenceInfoJniLocal { jpayne@69: jlong thread_tag; jpayne@69: jlong thread_id; jpayne@69: jint depth; jpayne@69: jmethodID method; jpayne@69: }; jpayne@69: struct _jvmtiHeapReferenceInfoReserved { jpayne@69: jlong reserved1; jpayne@69: jlong reserved2; jpayne@69: jlong reserved3; jpayne@69: jlong reserved4; jpayne@69: jlong reserved5; jpayne@69: jlong reserved6; jpayne@69: jlong reserved7; jpayne@69: jlong reserved8; jpayne@69: }; jpayne@69: union _jvmtiHeapReferenceInfo { jpayne@69: jvmtiHeapReferenceInfoField field; jpayne@69: jvmtiHeapReferenceInfoArray array; jpayne@69: jvmtiHeapReferenceInfoConstantPool constant_pool; jpayne@69: jvmtiHeapReferenceInfoStackLocal stack_local; jpayne@69: jvmtiHeapReferenceInfoJniLocal jni_local; jpayne@69: jvmtiHeapReferenceInfoReserved other; jpayne@69: }; jpayne@69: struct _jvmtiHeapCallbacks { jpayne@69: jvmtiHeapIterationCallback heap_iteration_callback; jpayne@69: jvmtiHeapReferenceCallback heap_reference_callback; jpayne@69: jvmtiPrimitiveFieldCallback primitive_field_callback; jpayne@69: jvmtiArrayPrimitiveValueCallback array_primitive_value_callback; jpayne@69: jvmtiStringPrimitiveValueCallback string_primitive_value_callback; jpayne@69: jvmtiReservedCallback reserved5; jpayne@69: jvmtiReservedCallback reserved6; jpayne@69: jvmtiReservedCallback reserved7; jpayne@69: jvmtiReservedCallback reserved8; jpayne@69: jvmtiReservedCallback reserved9; jpayne@69: jvmtiReservedCallback reserved10; jpayne@69: jvmtiReservedCallback reserved11; jpayne@69: jvmtiReservedCallback reserved12; jpayne@69: jvmtiReservedCallback reserved13; jpayne@69: jvmtiReservedCallback reserved14; jpayne@69: jvmtiReservedCallback reserved15; jpayne@69: }; jpayne@69: struct _jvmtiClassDefinition { jpayne@69: jclass klass; jpayne@69: jint class_byte_count; jpayne@69: const unsigned char* class_bytes; jpayne@69: }; jpayne@69: struct _jvmtiMonitorUsage { jpayne@69: jthread owner; jpayne@69: jint entry_count; jpayne@69: jint waiter_count; jpayne@69: jthread* waiters; jpayne@69: jint notify_waiter_count; jpayne@69: jthread* notify_waiters; jpayne@69: }; jpayne@69: struct _jvmtiLineNumberEntry { jpayne@69: jlocation start_location; jpayne@69: jint line_number; jpayne@69: }; jpayne@69: struct _jvmtiLocalVariableEntry { jpayne@69: jlocation start_location; jpayne@69: jint length; jpayne@69: char* name; jpayne@69: char* signature; jpayne@69: char* generic_signature; jpayne@69: jint slot; jpayne@69: }; jpayne@69: struct _jvmtiParamInfo { jpayne@69: char* name; jpayne@69: jvmtiParamKind kind; jpayne@69: jvmtiParamTypes base_type; jpayne@69: jboolean null_ok; jpayne@69: }; jpayne@69: struct _jvmtiExtensionFunctionInfo { jpayne@69: jvmtiExtensionFunction func; jpayne@69: char* id; jpayne@69: char* short_description; jpayne@69: jint param_count; jpayne@69: jvmtiParamInfo* params; jpayne@69: jint error_count; jpayne@69: jvmtiError* errors; jpayne@69: }; jpayne@69: struct _jvmtiExtensionEventInfo { jpayne@69: jint extension_event_index; jpayne@69: char* id; jpayne@69: char* short_description; jpayne@69: jint param_count; jpayne@69: jvmtiParamInfo* params; jpayne@69: }; jpayne@69: struct _jvmtiTimerInfo { jpayne@69: jlong max_value; jpayne@69: jboolean may_skip_forward; jpayne@69: jboolean may_skip_backward; jpayne@69: jvmtiTimerKind kind; jpayne@69: jlong reserved1; jpayne@69: jlong reserved2; jpayne@69: }; jpayne@69: struct _jvmtiAddrLocationMap { jpayne@69: const void* start_address; jpayne@69: jlocation location; jpayne@69: }; jpayne@69: jpayne@69: typedef struct { jpayne@69: unsigned int can_tag_objects : 1; jpayne@69: unsigned int can_generate_field_modification_events : 1; jpayne@69: unsigned int can_generate_field_access_events : 1; jpayne@69: unsigned int can_get_bytecodes : 1; jpayne@69: unsigned int can_get_synthetic_attribute : 1; jpayne@69: unsigned int can_get_owned_monitor_info : 1; jpayne@69: unsigned int can_get_current_contended_monitor : 1; jpayne@69: unsigned int can_get_monitor_info : 1; jpayne@69: unsigned int can_pop_frame : 1; jpayne@69: unsigned int can_redefine_classes : 1; jpayne@69: unsigned int can_signal_thread : 1; jpayne@69: unsigned int can_get_source_file_name : 1; jpayne@69: unsigned int can_get_line_numbers : 1; jpayne@69: unsigned int can_get_source_debug_extension : 1; jpayne@69: unsigned int can_access_local_variables : 1; jpayne@69: unsigned int can_maintain_original_method_order : 1; jpayne@69: unsigned int can_generate_single_step_events : 1; jpayne@69: unsigned int can_generate_exception_events : 1; jpayne@69: unsigned int can_generate_frame_pop_events : 1; jpayne@69: unsigned int can_generate_breakpoint_events : 1; jpayne@69: unsigned int can_suspend : 1; jpayne@69: unsigned int can_redefine_any_class : 1; jpayne@69: unsigned int can_get_current_thread_cpu_time : 1; jpayne@69: unsigned int can_get_thread_cpu_time : 1; jpayne@69: unsigned int can_generate_method_entry_events : 1; jpayne@69: unsigned int can_generate_method_exit_events : 1; jpayne@69: unsigned int can_generate_all_class_hook_events : 1; jpayne@69: unsigned int can_generate_compiled_method_load_events : 1; jpayne@69: unsigned int can_generate_monitor_events : 1; jpayne@69: unsigned int can_generate_vm_object_alloc_events : 1; jpayne@69: unsigned int can_generate_native_method_bind_events : 1; jpayne@69: unsigned int can_generate_garbage_collection_events : 1; jpayne@69: unsigned int can_generate_object_free_events : 1; jpayne@69: unsigned int can_force_early_return : 1; jpayne@69: unsigned int can_get_owned_monitor_stack_depth_info : 1; jpayne@69: unsigned int can_get_constant_pool : 1; jpayne@69: unsigned int can_set_native_method_prefix : 1; jpayne@69: unsigned int can_retransform_classes : 1; jpayne@69: unsigned int can_retransform_any_class : 1; jpayne@69: unsigned int can_generate_resource_exhaustion_heap_events : 1; jpayne@69: unsigned int can_generate_resource_exhaustion_threads_events : 1; jpayne@69: unsigned int can_generate_early_vmstart : 1; jpayne@69: unsigned int can_generate_early_class_hook_events : 1; jpayne@69: unsigned int can_generate_sampled_object_alloc_events : 1; jpayne@69: unsigned int : 4; jpayne@69: unsigned int : 16; jpayne@69: unsigned int : 16; jpayne@69: unsigned int : 16; jpayne@69: unsigned int : 16; jpayne@69: unsigned int : 16; jpayne@69: } jvmtiCapabilities; jpayne@69: jpayne@69: jpayne@69: /* Event Definitions */ jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventReserved)(void); jpayne@69: jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventBreakpoint) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jmethodID method, jpayne@69: jlocation location); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventClassFileLoadHook) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jclass class_being_redefined, jpayne@69: jobject loader, jpayne@69: const char* name, jpayne@69: jobject protection_domain, jpayne@69: jint class_data_len, jpayne@69: const unsigned char* class_data, jpayne@69: jint* new_class_data_len, jpayne@69: unsigned char** new_class_data); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventClassLoad) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jclass klass); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventClassPrepare) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jclass klass); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventCompiledMethodLoad) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: jmethodID method, jpayne@69: jint code_size, jpayne@69: const void* code_addr, jpayne@69: jint map_length, jpayne@69: const jvmtiAddrLocationMap* map, jpayne@69: const void* compile_info); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventCompiledMethodUnload) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: jmethodID method, jpayne@69: const void* code_addr); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventDataDumpRequest) jpayne@69: (jvmtiEnv *jvmti_env); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventDynamicCodeGenerated) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: const char* name, jpayne@69: const void* address, jpayne@69: jint length); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventException) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jmethodID method, jpayne@69: jlocation location, jpayne@69: jobject exception, jpayne@69: jmethodID catch_method, jpayne@69: jlocation catch_location); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventExceptionCatch) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jmethodID method, jpayne@69: jlocation location, jpayne@69: jobject exception); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventFieldAccess) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jmethodID method, jpayne@69: jlocation location, jpayne@69: jclass field_klass, jpayne@69: jobject object, jpayne@69: jfieldID field); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventFieldModification) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jmethodID method, jpayne@69: jlocation location, jpayne@69: jclass field_klass, jpayne@69: jobject object, jpayne@69: jfieldID field, jpayne@69: char signature_type, jpayne@69: jvalue new_value); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventFramePop) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jmethodID method, jpayne@69: jboolean was_popped_by_exception); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventGarbageCollectionFinish) jpayne@69: (jvmtiEnv *jvmti_env); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventGarbageCollectionStart) jpayne@69: (jvmtiEnv *jvmti_env); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventMethodEntry) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jmethodID method); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventMethodExit) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jmethodID method, jpayne@69: jboolean was_popped_by_exception, jpayne@69: jvalue return_value); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventMonitorContendedEnter) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jobject object); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventMonitorContendedEntered) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jobject object); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventMonitorWait) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jobject object, jpayne@69: jlong timeout); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventMonitorWaited) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jobject object, jpayne@69: jboolean timed_out); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventNativeMethodBind) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jmethodID method, jpayne@69: void* address, jpayne@69: void** new_address_ptr); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventObjectFree) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: jlong tag); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventResourceExhausted) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jint flags, jpayne@69: const void* reserved, jpayne@69: const char* description); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventSampledObjectAlloc) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jobject object, jpayne@69: jclass object_klass, jpayne@69: jlong size); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventSingleStep) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jmethodID method, jpayne@69: jlocation location); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventThreadEnd) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventThreadStart) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventVMDeath) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventVMInit) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventVMObjectAlloc) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env, jpayne@69: jthread thread, jpayne@69: jobject object, jpayne@69: jclass object_klass, jpayne@69: jlong size); jpayne@69: jpayne@69: typedef void (JNICALL *jvmtiEventVMStart) jpayne@69: (jvmtiEnv *jvmti_env, jpayne@69: JNIEnv* jni_env); jpayne@69: jpayne@69: /* Event Callback Structure */ jpayne@69: jpayne@69: typedef struct { jpayne@69: /* 50 : VM Initialization Event */ jpayne@69: jvmtiEventVMInit VMInit; jpayne@69: /* 51 : VM Death Event */ jpayne@69: jvmtiEventVMDeath VMDeath; jpayne@69: /* 52 : Thread Start */ jpayne@69: jvmtiEventThreadStart ThreadStart; jpayne@69: /* 53 : Thread End */ jpayne@69: jvmtiEventThreadEnd ThreadEnd; jpayne@69: /* 54 : Class File Load Hook */ jpayne@69: jvmtiEventClassFileLoadHook ClassFileLoadHook; jpayne@69: /* 55 : Class Load */ jpayne@69: jvmtiEventClassLoad ClassLoad; jpayne@69: /* 56 : Class Prepare */ jpayne@69: jvmtiEventClassPrepare ClassPrepare; jpayne@69: /* 57 : VM Start Event */ jpayne@69: jvmtiEventVMStart VMStart; jpayne@69: /* 58 : Exception */ jpayne@69: jvmtiEventException Exception; jpayne@69: /* 59 : Exception Catch */ jpayne@69: jvmtiEventExceptionCatch ExceptionCatch; jpayne@69: /* 60 : Single Step */ jpayne@69: jvmtiEventSingleStep SingleStep; jpayne@69: /* 61 : Frame Pop */ jpayne@69: jvmtiEventFramePop FramePop; jpayne@69: /* 62 : Breakpoint */ jpayne@69: jvmtiEventBreakpoint Breakpoint; jpayne@69: /* 63 : Field Access */ jpayne@69: jvmtiEventFieldAccess FieldAccess; jpayne@69: /* 64 : Field Modification */ jpayne@69: jvmtiEventFieldModification FieldModification; jpayne@69: /* 65 : Method Entry */ jpayne@69: jvmtiEventMethodEntry MethodEntry; jpayne@69: /* 66 : Method Exit */ jpayne@69: jvmtiEventMethodExit MethodExit; jpayne@69: /* 67 : Native Method Bind */ jpayne@69: jvmtiEventNativeMethodBind NativeMethodBind; jpayne@69: /* 68 : Compiled Method Load */ jpayne@69: jvmtiEventCompiledMethodLoad CompiledMethodLoad; jpayne@69: /* 69 : Compiled Method Unload */ jpayne@69: jvmtiEventCompiledMethodUnload CompiledMethodUnload; jpayne@69: /* 70 : Dynamic Code Generated */ jpayne@69: jvmtiEventDynamicCodeGenerated DynamicCodeGenerated; jpayne@69: /* 71 : Data Dump Request */ jpayne@69: jvmtiEventDataDumpRequest DataDumpRequest; jpayne@69: /* 72 */ jpayne@69: jvmtiEventReserved reserved72; jpayne@69: /* 73 : Monitor Wait */ jpayne@69: jvmtiEventMonitorWait MonitorWait; jpayne@69: /* 74 : Monitor Waited */ jpayne@69: jvmtiEventMonitorWaited MonitorWaited; jpayne@69: /* 75 : Monitor Contended Enter */ jpayne@69: jvmtiEventMonitorContendedEnter MonitorContendedEnter; jpayne@69: /* 76 : Monitor Contended Entered */ jpayne@69: jvmtiEventMonitorContendedEntered MonitorContendedEntered; jpayne@69: /* 77 */ jpayne@69: jvmtiEventReserved reserved77; jpayne@69: /* 78 */ jpayne@69: jvmtiEventReserved reserved78; jpayne@69: /* 79 */ jpayne@69: jvmtiEventReserved reserved79; jpayne@69: /* 80 : Resource Exhausted */ jpayne@69: jvmtiEventResourceExhausted ResourceExhausted; jpayne@69: /* 81 : Garbage Collection Start */ jpayne@69: jvmtiEventGarbageCollectionStart GarbageCollectionStart; jpayne@69: /* 82 : Garbage Collection Finish */ jpayne@69: jvmtiEventGarbageCollectionFinish GarbageCollectionFinish; jpayne@69: /* 83 : Object Free */ jpayne@69: jvmtiEventObjectFree ObjectFree; jpayne@69: /* 84 : VM Object Allocation */ jpayne@69: jvmtiEventVMObjectAlloc VMObjectAlloc; jpayne@69: /* 85 */ jpayne@69: jvmtiEventReserved reserved85; jpayne@69: /* 86 : Sampled Object Allocation */ jpayne@69: jvmtiEventSampledObjectAlloc SampledObjectAlloc; jpayne@69: } jvmtiEventCallbacks; jpayne@69: jpayne@69: jpayne@69: /* Function Interface */ jpayne@69: jpayne@69: typedef struct jvmtiInterface_1_ { jpayne@69: jpayne@69: /* 1 : RESERVED */ jpayne@69: void *reserved1; jpayne@69: jpayne@69: /* 2 : Set Event Notification Mode */ jpayne@69: jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env, jpayne@69: jvmtiEventMode mode, jpayne@69: jvmtiEvent event_type, jpayne@69: jthread event_thread, jpayne@69: ...); jpayne@69: jpayne@69: /* 3 : Get All Modules */ jpayne@69: jvmtiError (JNICALL *GetAllModules) (jvmtiEnv* env, jpayne@69: jint* module_count_ptr, jpayne@69: jobject** modules_ptr); jpayne@69: jpayne@69: /* 4 : Get All Threads */ jpayne@69: jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env, jpayne@69: jint* threads_count_ptr, jpayne@69: jthread** threads_ptr); jpayne@69: jpayne@69: /* 5 : Suspend Thread */ jpayne@69: jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env, jpayne@69: jthread thread); jpayne@69: jpayne@69: /* 6 : Resume Thread */ jpayne@69: jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env, jpayne@69: jthread thread); jpayne@69: jpayne@69: /* 7 : Stop Thread */ jpayne@69: jvmtiError (JNICALL *StopThread) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jobject exception); jpayne@69: jpayne@69: /* 8 : Interrupt Thread */ jpayne@69: jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env, jpayne@69: jthread thread); jpayne@69: jpayne@69: /* 9 : Get Thread Info */ jpayne@69: jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jvmtiThreadInfo* info_ptr); jpayne@69: jpayne@69: /* 10 : Get Owned Monitor Info */ jpayne@69: jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint* owned_monitor_count_ptr, jpayne@69: jobject** owned_monitors_ptr); jpayne@69: jpayne@69: /* 11 : Get Current Contended Monitor */ jpayne@69: jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jobject* monitor_ptr); jpayne@69: jpayne@69: /* 12 : Run Agent Thread */ jpayne@69: jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jvmtiStartFunction proc, jpayne@69: const void* arg, jpayne@69: jint priority); jpayne@69: jpayne@69: /* 13 : Get Top Thread Groups */ jpayne@69: jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env, jpayne@69: jint* group_count_ptr, jpayne@69: jthreadGroup** groups_ptr); jpayne@69: jpayne@69: /* 14 : Get Thread Group Info */ jpayne@69: jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env, jpayne@69: jthreadGroup group, jpayne@69: jvmtiThreadGroupInfo* info_ptr); jpayne@69: jpayne@69: /* 15 : Get Thread Group Children */ jpayne@69: jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv* env, jpayne@69: jthreadGroup group, jpayne@69: jint* thread_count_ptr, jpayne@69: jthread** threads_ptr, jpayne@69: jint* group_count_ptr, jpayne@69: jthreadGroup** groups_ptr); jpayne@69: jpayne@69: /* 16 : Get Frame Count */ jpayne@69: jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint* count_ptr); jpayne@69: jpayne@69: /* 17 : Get Thread State */ jpayne@69: jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint* thread_state_ptr); jpayne@69: jpayne@69: /* 18 : Get Current Thread */ jpayne@69: jvmtiError (JNICALL *GetCurrentThread) (jvmtiEnv* env, jpayne@69: jthread* thread_ptr); jpayne@69: jpayne@69: /* 19 : Get Frame Location */ jpayne@69: jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jmethodID* method_ptr, jpayne@69: jlocation* location_ptr); jpayne@69: jpayne@69: /* 20 : Notify Frame Pop */ jpayne@69: jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth); jpayne@69: jpayne@69: /* 21 : Get Local Variable - Object */ jpayne@69: jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jobject* value_ptr); jpayne@69: jpayne@69: /* 22 : Get Local Variable - Int */ jpayne@69: jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jint* value_ptr); jpayne@69: jpayne@69: /* 23 : Get Local Variable - Long */ jpayne@69: jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jlong* value_ptr); jpayne@69: jpayne@69: /* 24 : Get Local Variable - Float */ jpayne@69: jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jfloat* value_ptr); jpayne@69: jpayne@69: /* 25 : Get Local Variable - Double */ jpayne@69: jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jdouble* value_ptr); jpayne@69: jpayne@69: /* 26 : Set Local Variable - Object */ jpayne@69: jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jobject value); jpayne@69: jpayne@69: /* 27 : Set Local Variable - Int */ jpayne@69: jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jint value); jpayne@69: jpayne@69: /* 28 : Set Local Variable - Long */ jpayne@69: jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jlong value); jpayne@69: jpayne@69: /* 29 : Set Local Variable - Float */ jpayne@69: jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jfloat value); jpayne@69: jpayne@69: /* 30 : Set Local Variable - Double */ jpayne@69: jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jdouble value); jpayne@69: jpayne@69: /* 31 : Create Raw Monitor */ jpayne@69: jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv* env, jpayne@69: const char* name, jpayne@69: jrawMonitorID* monitor_ptr); jpayne@69: jpayne@69: /* 32 : Destroy Raw Monitor */ jpayne@69: jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv* env, jpayne@69: jrawMonitorID monitor); jpayne@69: jpayne@69: /* 33 : Raw Monitor Enter */ jpayne@69: jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv* env, jpayne@69: jrawMonitorID monitor); jpayne@69: jpayne@69: /* 34 : Raw Monitor Exit */ jpayne@69: jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv* env, jpayne@69: jrawMonitorID monitor); jpayne@69: jpayne@69: /* 35 : Raw Monitor Wait */ jpayne@69: jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv* env, jpayne@69: jrawMonitorID monitor, jpayne@69: jlong millis); jpayne@69: jpayne@69: /* 36 : Raw Monitor Notify */ jpayne@69: jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv* env, jpayne@69: jrawMonitorID monitor); jpayne@69: jpayne@69: /* 37 : Raw Monitor Notify All */ jpayne@69: jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv* env, jpayne@69: jrawMonitorID monitor); jpayne@69: jpayne@69: /* 38 : Set Breakpoint */ jpayne@69: jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jlocation location); jpayne@69: jpayne@69: /* 39 : Clear Breakpoint */ jpayne@69: jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jlocation location); jpayne@69: jpayne@69: /* 40 : Get Named Module */ jpayne@69: jvmtiError (JNICALL *GetNamedModule) (jvmtiEnv* env, jpayne@69: jobject class_loader, jpayne@69: const char* package_name, jpayne@69: jobject* module_ptr); jpayne@69: jpayne@69: /* 41 : Set Field Access Watch */ jpayne@69: jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jfieldID field); jpayne@69: jpayne@69: /* 42 : Clear Field Access Watch */ jpayne@69: jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jfieldID field); jpayne@69: jpayne@69: /* 43 : Set Field Modification Watch */ jpayne@69: jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jfieldID field); jpayne@69: jpayne@69: /* 44 : Clear Field Modification Watch */ jpayne@69: jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jfieldID field); jpayne@69: jpayne@69: /* 45 : Is Modifiable Class */ jpayne@69: jvmtiError (JNICALL *IsModifiableClass) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jboolean* is_modifiable_class_ptr); jpayne@69: jpayne@69: /* 46 : Allocate */ jpayne@69: jvmtiError (JNICALL *Allocate) (jvmtiEnv* env, jpayne@69: jlong size, jpayne@69: unsigned char** mem_ptr); jpayne@69: jpayne@69: /* 47 : Deallocate */ jpayne@69: jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env, jpayne@69: unsigned char* mem); jpayne@69: jpayne@69: /* 48 : Get Class Signature */ jpayne@69: jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: char** signature_ptr, jpayne@69: char** generic_ptr); jpayne@69: jpayne@69: /* 49 : Get Class Status */ jpayne@69: jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jint* status_ptr); jpayne@69: jpayne@69: /* 50 : Get Source File Name */ jpayne@69: jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: char** source_name_ptr); jpayne@69: jpayne@69: /* 51 : Get Class Modifiers */ jpayne@69: jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jint* modifiers_ptr); jpayne@69: jpayne@69: /* 52 : Get Class Methods */ jpayne@69: jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jint* method_count_ptr, jpayne@69: jmethodID** methods_ptr); jpayne@69: jpayne@69: /* 53 : Get Class Fields */ jpayne@69: jvmtiError (JNICALL *GetClassFields) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jint* field_count_ptr, jpayne@69: jfieldID** fields_ptr); jpayne@69: jpayne@69: /* 54 : Get Implemented Interfaces */ jpayne@69: jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jint* interface_count_ptr, jpayne@69: jclass** interfaces_ptr); jpayne@69: jpayne@69: /* 55 : Is Interface */ jpayne@69: jvmtiError (JNICALL *IsInterface) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jboolean* is_interface_ptr); jpayne@69: jpayne@69: /* 56 : Is Array Class */ jpayne@69: jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jboolean* is_array_class_ptr); jpayne@69: jpayne@69: /* 57 : Get Class Loader */ jpayne@69: jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jobject* classloader_ptr); jpayne@69: jpayne@69: /* 58 : Get Object Hash Code */ jpayne@69: jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv* env, jpayne@69: jobject object, jpayne@69: jint* hash_code_ptr); jpayne@69: jpayne@69: /* 59 : Get Object Monitor Usage */ jpayne@69: jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv* env, jpayne@69: jobject object, jpayne@69: jvmtiMonitorUsage* info_ptr); jpayne@69: jpayne@69: /* 60 : Get Field Name (and Signature) */ jpayne@69: jvmtiError (JNICALL *GetFieldName) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jfieldID field, jpayne@69: char** name_ptr, jpayne@69: char** signature_ptr, jpayne@69: char** generic_ptr); jpayne@69: jpayne@69: /* 61 : Get Field Declaring Class */ jpayne@69: jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jfieldID field, jpayne@69: jclass* declaring_class_ptr); jpayne@69: jpayne@69: /* 62 : Get Field Modifiers */ jpayne@69: jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jfieldID field, jpayne@69: jint* modifiers_ptr); jpayne@69: jpayne@69: /* 63 : Is Field Synthetic */ jpayne@69: jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jfieldID field, jpayne@69: jboolean* is_synthetic_ptr); jpayne@69: jpayne@69: /* 64 : Get Method Name (and Signature) */ jpayne@69: jvmtiError (JNICALL *GetMethodName) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: char** name_ptr, jpayne@69: char** signature_ptr, jpayne@69: char** generic_ptr); jpayne@69: jpayne@69: /* 65 : Get Method Declaring Class */ jpayne@69: jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jclass* declaring_class_ptr); jpayne@69: jpayne@69: /* 66 : Get Method Modifiers */ jpayne@69: jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jint* modifiers_ptr); jpayne@69: jpayne@69: /* 67 : RESERVED */ jpayne@69: void *reserved67; jpayne@69: jpayne@69: /* 68 : Get Max Locals */ jpayne@69: jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jint* max_ptr); jpayne@69: jpayne@69: /* 69 : Get Arguments Size */ jpayne@69: jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jint* size_ptr); jpayne@69: jpayne@69: /* 70 : Get Line Number Table */ jpayne@69: jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jint* entry_count_ptr, jpayne@69: jvmtiLineNumberEntry** table_ptr); jpayne@69: jpayne@69: /* 71 : Get Method Location */ jpayne@69: jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jlocation* start_location_ptr, jpayne@69: jlocation* end_location_ptr); jpayne@69: jpayne@69: /* 72 : Get Local Variable Table */ jpayne@69: jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jint* entry_count_ptr, jpayne@69: jvmtiLocalVariableEntry** table_ptr); jpayne@69: jpayne@69: /* 73 : Set Native Method Prefix */ jpayne@69: jvmtiError (JNICALL *SetNativeMethodPrefix) (jvmtiEnv* env, jpayne@69: const char* prefix); jpayne@69: jpayne@69: /* 74 : Set Native Method Prefixes */ jpayne@69: jvmtiError (JNICALL *SetNativeMethodPrefixes) (jvmtiEnv* env, jpayne@69: jint prefix_count, jpayne@69: char** prefixes); jpayne@69: jpayne@69: /* 75 : Get Bytecodes */ jpayne@69: jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jint* bytecode_count_ptr, jpayne@69: unsigned char** bytecodes_ptr); jpayne@69: jpayne@69: /* 76 : Is Method Native */ jpayne@69: jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jboolean* is_native_ptr); jpayne@69: jpayne@69: /* 77 : Is Method Synthetic */ jpayne@69: jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jboolean* is_synthetic_ptr); jpayne@69: jpayne@69: /* 78 : Get Loaded Classes */ jpayne@69: jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv* env, jpayne@69: jint* class_count_ptr, jpayne@69: jclass** classes_ptr); jpayne@69: jpayne@69: /* 79 : Get Classloader Classes */ jpayne@69: jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env, jpayne@69: jobject initiating_loader, jpayne@69: jint* class_count_ptr, jpayne@69: jclass** classes_ptr); jpayne@69: jpayne@69: /* 80 : Pop Frame */ jpayne@69: jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env, jpayne@69: jthread thread); jpayne@69: jpayne@69: /* 81 : Force Early Return - Object */ jpayne@69: jvmtiError (JNICALL *ForceEarlyReturnObject) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jobject value); jpayne@69: jpayne@69: /* 82 : Force Early Return - Int */ jpayne@69: jvmtiError (JNICALL *ForceEarlyReturnInt) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint value); jpayne@69: jpayne@69: /* 83 : Force Early Return - Long */ jpayne@69: jvmtiError (JNICALL *ForceEarlyReturnLong) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jlong value); jpayne@69: jpayne@69: /* 84 : Force Early Return - Float */ jpayne@69: jvmtiError (JNICALL *ForceEarlyReturnFloat) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jfloat value); jpayne@69: jpayne@69: /* 85 : Force Early Return - Double */ jpayne@69: jvmtiError (JNICALL *ForceEarlyReturnDouble) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jdouble value); jpayne@69: jpayne@69: /* 86 : Force Early Return - Void */ jpayne@69: jvmtiError (JNICALL *ForceEarlyReturnVoid) (jvmtiEnv* env, jpayne@69: jthread thread); jpayne@69: jpayne@69: /* 87 : Redefine Classes */ jpayne@69: jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env, jpayne@69: jint class_count, jpayne@69: const jvmtiClassDefinition* class_definitions); jpayne@69: jpayne@69: /* 88 : Get Version Number */ jpayne@69: jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env, jpayne@69: jint* version_ptr); jpayne@69: jpayne@69: /* 89 : Get Capabilities */ jpayne@69: jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv* env, jpayne@69: jvmtiCapabilities* capabilities_ptr); jpayne@69: jpayne@69: /* 90 : Get Source Debug Extension */ jpayne@69: jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: char** source_debug_extension_ptr); jpayne@69: jpayne@69: /* 91 : Is Method Obsolete */ jpayne@69: jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv* env, jpayne@69: jmethodID method, jpayne@69: jboolean* is_obsolete_ptr); jpayne@69: jpayne@69: /* 92 : Suspend Thread List */ jpayne@69: jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv* env, jpayne@69: jint request_count, jpayne@69: const jthread* request_list, jpayne@69: jvmtiError* results); jpayne@69: jpayne@69: /* 93 : Resume Thread List */ jpayne@69: jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv* env, jpayne@69: jint request_count, jpayne@69: const jthread* request_list, jpayne@69: jvmtiError* results); jpayne@69: jpayne@69: /* 94 : Add Module Reads */ jpayne@69: jvmtiError (JNICALL *AddModuleReads) (jvmtiEnv* env, jpayne@69: jobject module, jpayne@69: jobject to_module); jpayne@69: jpayne@69: /* 95 : Add Module Exports */ jpayne@69: jvmtiError (JNICALL *AddModuleExports) (jvmtiEnv* env, jpayne@69: jobject module, jpayne@69: const char* pkg_name, jpayne@69: jobject to_module); jpayne@69: jpayne@69: /* 96 : Add Module Opens */ jpayne@69: jvmtiError (JNICALL *AddModuleOpens) (jvmtiEnv* env, jpayne@69: jobject module, jpayne@69: const char* pkg_name, jpayne@69: jobject to_module); jpayne@69: jpayne@69: /* 97 : Add Module Uses */ jpayne@69: jvmtiError (JNICALL *AddModuleUses) (jvmtiEnv* env, jpayne@69: jobject module, jpayne@69: jclass service); jpayne@69: jpayne@69: /* 98 : Add Module Provides */ jpayne@69: jvmtiError (JNICALL *AddModuleProvides) (jvmtiEnv* env, jpayne@69: jobject module, jpayne@69: jclass service, jpayne@69: jclass impl_class); jpayne@69: jpayne@69: /* 99 : Is Modifiable Module */ jpayne@69: jvmtiError (JNICALL *IsModifiableModule) (jvmtiEnv* env, jpayne@69: jobject module, jpayne@69: jboolean* is_modifiable_module_ptr); jpayne@69: jpayne@69: /* 100 : Get All Stack Traces */ jpayne@69: jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv* env, jpayne@69: jint max_frame_count, jpayne@69: jvmtiStackInfo** stack_info_ptr, jpayne@69: jint* thread_count_ptr); jpayne@69: jpayne@69: /* 101 : Get Thread List Stack Traces */ jpayne@69: jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv* env, jpayne@69: jint thread_count, jpayne@69: const jthread* thread_list, jpayne@69: jint max_frame_count, jpayne@69: jvmtiStackInfo** stack_info_ptr); jpayne@69: jpayne@69: /* 102 : Get Thread Local Storage */ jpayne@69: jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: void** data_ptr); jpayne@69: jpayne@69: /* 103 : Set Thread Local Storage */ jpayne@69: jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: const void* data); jpayne@69: jpayne@69: /* 104 : Get Stack Trace */ jpayne@69: jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint start_depth, jpayne@69: jint max_frame_count, jpayne@69: jvmtiFrameInfo* frame_buffer, jpayne@69: jint* count_ptr); jpayne@69: jpayne@69: /* 105 : RESERVED */ jpayne@69: void *reserved105; jpayne@69: jpayne@69: /* 106 : Get Tag */ jpayne@69: jvmtiError (JNICALL *GetTag) (jvmtiEnv* env, jpayne@69: jobject object, jpayne@69: jlong* tag_ptr); jpayne@69: jpayne@69: /* 107 : Set Tag */ jpayne@69: jvmtiError (JNICALL *SetTag) (jvmtiEnv* env, jpayne@69: jobject object, jpayne@69: jlong tag); jpayne@69: jpayne@69: /* 108 : Force Garbage Collection */ jpayne@69: jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env); jpayne@69: jpayne@69: /* 109 : Iterate Over Objects Reachable From Object */ jpayne@69: jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* env, jpayne@69: jobject object, jpayne@69: jvmtiObjectReferenceCallback object_reference_callback, jpayne@69: const void* user_data); jpayne@69: jpayne@69: /* 110 : Iterate Over Reachable Objects */ jpayne@69: jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env, jpayne@69: jvmtiHeapRootCallback heap_root_callback, jpayne@69: jvmtiStackReferenceCallback stack_ref_callback, jpayne@69: jvmtiObjectReferenceCallback object_ref_callback, jpayne@69: const void* user_data); jpayne@69: jpayne@69: /* 111 : Iterate Over Heap */ jpayne@69: jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env, jpayne@69: jvmtiHeapObjectFilter object_filter, jpayne@69: jvmtiHeapObjectCallback heap_object_callback, jpayne@69: const void* user_data); jpayne@69: jpayne@69: /* 112 : Iterate Over Instances Of Class */ jpayne@69: jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jvmtiHeapObjectFilter object_filter, jpayne@69: jvmtiHeapObjectCallback heap_object_callback, jpayne@69: const void* user_data); jpayne@69: jpayne@69: /* 113 : RESERVED */ jpayne@69: void *reserved113; jpayne@69: jpayne@69: /* 114 : Get Objects With Tags */ jpayne@69: jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env, jpayne@69: jint tag_count, jpayne@69: const jlong* tags, jpayne@69: jint* count_ptr, jpayne@69: jobject** object_result_ptr, jpayne@69: jlong** tag_result_ptr); jpayne@69: jpayne@69: /* 115 : Follow References */ jpayne@69: jvmtiError (JNICALL *FollowReferences) (jvmtiEnv* env, jpayne@69: jint heap_filter, jpayne@69: jclass klass, jpayne@69: jobject initial_object, jpayne@69: const jvmtiHeapCallbacks* callbacks, jpayne@69: const void* user_data); jpayne@69: jpayne@69: /* 116 : Iterate Through Heap */ jpayne@69: jvmtiError (JNICALL *IterateThroughHeap) (jvmtiEnv* env, jpayne@69: jint heap_filter, jpayne@69: jclass klass, jpayne@69: const jvmtiHeapCallbacks* callbacks, jpayne@69: const void* user_data); jpayne@69: jpayne@69: /* 117 : RESERVED */ jpayne@69: void *reserved117; jpayne@69: jpayne@69: /* 118 : RESERVED */ jpayne@69: void *reserved118; jpayne@69: jpayne@69: /* 119 : RESERVED */ jpayne@69: void *reserved119; jpayne@69: jpayne@69: /* 120 : Set JNI Function Table */ jpayne@69: jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv* env, jpayne@69: const jniNativeInterface* function_table); jpayne@69: jpayne@69: /* 121 : Get JNI Function Table */ jpayne@69: jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv* env, jpayne@69: jniNativeInterface** function_table); jpayne@69: jpayne@69: /* 122 : Set Event Callbacks */ jpayne@69: jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv* env, jpayne@69: const jvmtiEventCallbacks* callbacks, jpayne@69: jint size_of_callbacks); jpayne@69: jpayne@69: /* 123 : Generate Events */ jpayne@69: jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv* env, jpayne@69: jvmtiEvent event_type); jpayne@69: jpayne@69: /* 124 : Get Extension Functions */ jpayne@69: jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv* env, jpayne@69: jint* extension_count_ptr, jpayne@69: jvmtiExtensionFunctionInfo** extensions); jpayne@69: jpayne@69: /* 125 : Get Extension Events */ jpayne@69: jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv* env, jpayne@69: jint* extension_count_ptr, jpayne@69: jvmtiExtensionEventInfo** extensions); jpayne@69: jpayne@69: /* 126 : Set Extension Event Callback */ jpayne@69: jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv* env, jpayne@69: jint extension_event_index, jpayne@69: jvmtiExtensionEvent callback); jpayne@69: jpayne@69: /* 127 : Dispose Environment */ jpayne@69: jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv* env); jpayne@69: jpayne@69: /* 128 : Get Error Name */ jpayne@69: jvmtiError (JNICALL *GetErrorName) (jvmtiEnv* env, jpayne@69: jvmtiError error, jpayne@69: char** name_ptr); jpayne@69: jpayne@69: /* 129 : Get JLocation Format */ jpayne@69: jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv* env, jpayne@69: jvmtiJlocationFormat* format_ptr); jpayne@69: jpayne@69: /* 130 : Get System Properties */ jpayne@69: jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv* env, jpayne@69: jint* count_ptr, jpayne@69: char*** property_ptr); jpayne@69: jpayne@69: /* 131 : Get System Property */ jpayne@69: jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv* env, jpayne@69: const char* property, jpayne@69: char** value_ptr); jpayne@69: jpayne@69: /* 132 : Set System Property */ jpayne@69: jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv* env, jpayne@69: const char* property, jpayne@69: const char* value_ptr); jpayne@69: jpayne@69: /* 133 : Get Phase */ jpayne@69: jvmtiError (JNICALL *GetPhase) (jvmtiEnv* env, jpayne@69: jvmtiPhase* phase_ptr); jpayne@69: jpayne@69: /* 134 : Get Current Thread CPU Timer Information */ jpayne@69: jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv* env, jpayne@69: jvmtiTimerInfo* info_ptr); jpayne@69: jpayne@69: /* 135 : Get Current Thread CPU Time */ jpayne@69: jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv* env, jpayne@69: jlong* nanos_ptr); jpayne@69: jpayne@69: /* 136 : Get Thread CPU Timer Information */ jpayne@69: jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv* env, jpayne@69: jvmtiTimerInfo* info_ptr); jpayne@69: jpayne@69: /* 137 : Get Thread CPU Time */ jpayne@69: jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jlong* nanos_ptr); jpayne@69: jpayne@69: /* 138 : Get Timer Information */ jpayne@69: jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv* env, jpayne@69: jvmtiTimerInfo* info_ptr); jpayne@69: jpayne@69: /* 139 : Get Time */ jpayne@69: jvmtiError (JNICALL *GetTime) (jvmtiEnv* env, jpayne@69: jlong* nanos_ptr); jpayne@69: jpayne@69: /* 140 : Get Potential Capabilities */ jpayne@69: jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv* env, jpayne@69: jvmtiCapabilities* capabilities_ptr); jpayne@69: jpayne@69: /* 141 : RESERVED */ jpayne@69: void *reserved141; jpayne@69: jpayne@69: /* 142 : Add Capabilities */ jpayne@69: jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv* env, jpayne@69: const jvmtiCapabilities* capabilities_ptr); jpayne@69: jpayne@69: /* 143 : Relinquish Capabilities */ jpayne@69: jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env, jpayne@69: const jvmtiCapabilities* capabilities_ptr); jpayne@69: jpayne@69: /* 144 : Get Available Processors */ jpayne@69: jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env, jpayne@69: jint* processor_count_ptr); jpayne@69: jpayne@69: /* 145 : Get Class Version Numbers */ jpayne@69: jvmtiError (JNICALL *GetClassVersionNumbers) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jint* minor_version_ptr, jpayne@69: jint* major_version_ptr); jpayne@69: jpayne@69: /* 146 : Get Constant Pool */ jpayne@69: jvmtiError (JNICALL *GetConstantPool) (jvmtiEnv* env, jpayne@69: jclass klass, jpayne@69: jint* constant_pool_count_ptr, jpayne@69: jint* constant_pool_byte_count_ptr, jpayne@69: unsigned char** constant_pool_bytes_ptr); jpayne@69: jpayne@69: /* 147 : Get Environment Local Storage */ jpayne@69: jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env, jpayne@69: void** data_ptr); jpayne@69: jpayne@69: /* 148 : Set Environment Local Storage */ jpayne@69: jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env, jpayne@69: const void* data); jpayne@69: jpayne@69: /* 149 : Add To Bootstrap Class Loader Search */ jpayne@69: jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env, jpayne@69: const char* segment); jpayne@69: jpayne@69: /* 150 : Set Verbose Flag */ jpayne@69: jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env, jpayne@69: jvmtiVerboseFlag flag, jpayne@69: jboolean value); jpayne@69: jpayne@69: /* 151 : Add To System Class Loader Search */ jpayne@69: jvmtiError (JNICALL *AddToSystemClassLoaderSearch) (jvmtiEnv* env, jpayne@69: const char* segment); jpayne@69: jpayne@69: /* 152 : Retransform Classes */ jpayne@69: jvmtiError (JNICALL *RetransformClasses) (jvmtiEnv* env, jpayne@69: jint class_count, jpayne@69: const jclass* classes); jpayne@69: jpayne@69: /* 153 : Get Owned Monitor Stack Depth Info */ jpayne@69: jvmtiError (JNICALL *GetOwnedMonitorStackDepthInfo) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint* monitor_info_count_ptr, jpayne@69: jvmtiMonitorStackDepthInfo** monitor_info_ptr); jpayne@69: jpayne@69: /* 154 : Get Object Size */ jpayne@69: jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env, jpayne@69: jobject object, jpayne@69: jlong* size_ptr); jpayne@69: jpayne@69: /* 155 : Get Local Instance */ jpayne@69: jvmtiError (JNICALL *GetLocalInstance) (jvmtiEnv* env, jpayne@69: jthread thread, jpayne@69: jint depth, jpayne@69: jobject* value_ptr); jpayne@69: jpayne@69: /* 156 : Set Heap Sampling Interval */ jpayne@69: jvmtiError (JNICALL *SetHeapSamplingInterval) (jvmtiEnv* env, jpayne@69: jint sampling_interval); jpayne@69: jpayne@69: } jvmtiInterface_1; jpayne@69: jpayne@69: struct _jvmtiEnv { jpayne@69: const struct jvmtiInterface_1_ *functions; jpayne@69: #ifdef __cplusplus jpayne@69: jpayne@69: jpayne@69: jvmtiError Allocate(jlong size, jpayne@69: unsigned char** mem_ptr) { jpayne@69: return functions->Allocate(this, size, mem_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError Deallocate(unsigned char* mem) { jpayne@69: return functions->Deallocate(this, mem); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetThreadState(jthread thread, jpayne@69: jint* thread_state_ptr) { jpayne@69: return functions->GetThreadState(this, thread, thread_state_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetCurrentThread(jthread* thread_ptr) { jpayne@69: return functions->GetCurrentThread(this, thread_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetAllThreads(jint* threads_count_ptr, jpayne@69: jthread** threads_ptr) { jpayne@69: return functions->GetAllThreads(this, threads_count_ptr, threads_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SuspendThread(jthread thread) { jpayne@69: return functions->SuspendThread(this, thread); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SuspendThreadList(jint request_count, jpayne@69: const jthread* request_list, jpayne@69: jvmtiError* results) { jpayne@69: return functions->SuspendThreadList(this, request_count, request_list, results); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ResumeThread(jthread thread) { jpayne@69: return functions->ResumeThread(this, thread); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ResumeThreadList(jint request_count, jpayne@69: const jthread* request_list, jpayne@69: jvmtiError* results) { jpayne@69: return functions->ResumeThreadList(this, request_count, request_list, results); jpayne@69: } jpayne@69: jpayne@69: jvmtiError StopThread(jthread thread, jpayne@69: jobject exception) { jpayne@69: return functions->StopThread(this, thread, exception); jpayne@69: } jpayne@69: jpayne@69: jvmtiError InterruptThread(jthread thread) { jpayne@69: return functions->InterruptThread(this, thread); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetThreadInfo(jthread thread, jpayne@69: jvmtiThreadInfo* info_ptr) { jpayne@69: return functions->GetThreadInfo(this, thread, info_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetOwnedMonitorInfo(jthread thread, jpayne@69: jint* owned_monitor_count_ptr, jpayne@69: jobject** owned_monitors_ptr) { jpayne@69: return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count_ptr, owned_monitors_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetOwnedMonitorStackDepthInfo(jthread thread, jpayne@69: jint* monitor_info_count_ptr, jpayne@69: jvmtiMonitorStackDepthInfo** monitor_info_ptr) { jpayne@69: return functions->GetOwnedMonitorStackDepthInfo(this, thread, monitor_info_count_ptr, monitor_info_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetCurrentContendedMonitor(jthread thread, jpayne@69: jobject* monitor_ptr) { jpayne@69: return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError RunAgentThread(jthread thread, jpayne@69: jvmtiStartFunction proc, jpayne@69: const void* arg, jpayne@69: jint priority) { jpayne@69: return functions->RunAgentThread(this, thread, proc, arg, priority); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetThreadLocalStorage(jthread thread, jpayne@69: const void* data) { jpayne@69: return functions->SetThreadLocalStorage(this, thread, data); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetThreadLocalStorage(jthread thread, jpayne@69: void** data_ptr) { jpayne@69: return functions->GetThreadLocalStorage(this, thread, data_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetTopThreadGroups(jint* group_count_ptr, jpayne@69: jthreadGroup** groups_ptr) { jpayne@69: return functions->GetTopThreadGroups(this, group_count_ptr, groups_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetThreadGroupInfo(jthreadGroup group, jpayne@69: jvmtiThreadGroupInfo* info_ptr) { jpayne@69: return functions->GetThreadGroupInfo(this, group, info_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetThreadGroupChildren(jthreadGroup group, jpayne@69: jint* thread_count_ptr, jpayne@69: jthread** threads_ptr, jpayne@69: jint* group_count_ptr, jpayne@69: jthreadGroup** groups_ptr) { jpayne@69: return functions->GetThreadGroupChildren(this, group, thread_count_ptr, threads_ptr, group_count_ptr, groups_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetStackTrace(jthread thread, jpayne@69: jint start_depth, jpayne@69: jint max_frame_count, jpayne@69: jvmtiFrameInfo* frame_buffer, jpayne@69: jint* count_ptr) { jpayne@69: return functions->GetStackTrace(this, thread, start_depth, max_frame_count, frame_buffer, count_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetAllStackTraces(jint max_frame_count, jpayne@69: jvmtiStackInfo** stack_info_ptr, jpayne@69: jint* thread_count_ptr) { jpayne@69: return functions->GetAllStackTraces(this, max_frame_count, stack_info_ptr, thread_count_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetThreadListStackTraces(jint thread_count, jpayne@69: const jthread* thread_list, jpayne@69: jint max_frame_count, jpayne@69: jvmtiStackInfo** stack_info_ptr) { jpayne@69: return functions->GetThreadListStackTraces(this, thread_count, thread_list, max_frame_count, stack_info_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetFrameCount(jthread thread, jpayne@69: jint* count_ptr) { jpayne@69: return functions->GetFrameCount(this, thread, count_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError PopFrame(jthread thread) { jpayne@69: return functions->PopFrame(this, thread); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetFrameLocation(jthread thread, jpayne@69: jint depth, jpayne@69: jmethodID* method_ptr, jpayne@69: jlocation* location_ptr) { jpayne@69: return functions->GetFrameLocation(this, thread, depth, method_ptr, location_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError NotifyFramePop(jthread thread, jpayne@69: jint depth) { jpayne@69: return functions->NotifyFramePop(this, thread, depth); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ForceEarlyReturnObject(jthread thread, jpayne@69: jobject value) { jpayne@69: return functions->ForceEarlyReturnObject(this, thread, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ForceEarlyReturnInt(jthread thread, jpayne@69: jint value) { jpayne@69: return functions->ForceEarlyReturnInt(this, thread, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ForceEarlyReturnLong(jthread thread, jpayne@69: jlong value) { jpayne@69: return functions->ForceEarlyReturnLong(this, thread, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ForceEarlyReturnFloat(jthread thread, jpayne@69: jfloat value) { jpayne@69: return functions->ForceEarlyReturnFloat(this, thread, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ForceEarlyReturnDouble(jthread thread, jpayne@69: jdouble value) { jpayne@69: return functions->ForceEarlyReturnDouble(this, thread, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ForceEarlyReturnVoid(jthread thread) { jpayne@69: return functions->ForceEarlyReturnVoid(this, thread); jpayne@69: } jpayne@69: jpayne@69: jvmtiError FollowReferences(jint heap_filter, jpayne@69: jclass klass, jpayne@69: jobject initial_object, jpayne@69: const jvmtiHeapCallbacks* callbacks, jpayne@69: const void* user_data) { jpayne@69: return functions->FollowReferences(this, heap_filter, klass, initial_object, callbacks, user_data); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IterateThroughHeap(jint heap_filter, jpayne@69: jclass klass, jpayne@69: const jvmtiHeapCallbacks* callbacks, jpayne@69: const void* user_data) { jpayne@69: return functions->IterateThroughHeap(this, heap_filter, klass, callbacks, user_data); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetTag(jobject object, jpayne@69: jlong* tag_ptr) { jpayne@69: return functions->GetTag(this, object, tag_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetTag(jobject object, jpayne@69: jlong tag) { jpayne@69: return functions->SetTag(this, object, tag); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetObjectsWithTags(jint tag_count, jpayne@69: const jlong* tags, jpayne@69: jint* count_ptr, jpayne@69: jobject** object_result_ptr, jpayne@69: jlong** tag_result_ptr) { jpayne@69: return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr, object_result_ptr, tag_result_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ForceGarbageCollection() { jpayne@69: return functions->ForceGarbageCollection(this); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IterateOverObjectsReachableFromObject(jobject object, jpayne@69: jvmtiObjectReferenceCallback object_reference_callback, jpayne@69: const void* user_data) { jpayne@69: return functions->IterateOverObjectsReachableFromObject(this, object, object_reference_callback, user_data); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback, jpayne@69: jvmtiStackReferenceCallback stack_ref_callback, jpayne@69: jvmtiObjectReferenceCallback object_ref_callback, jpayne@69: const void* user_data) { jpayne@69: return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter, jpayne@69: jvmtiHeapObjectCallback heap_object_callback, jpayne@69: const void* user_data) { jpayne@69: return functions->IterateOverHeap(this, object_filter, heap_object_callback, user_data); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IterateOverInstancesOfClass(jclass klass, jpayne@69: jvmtiHeapObjectFilter object_filter, jpayne@69: jvmtiHeapObjectCallback heap_object_callback, jpayne@69: const void* user_data) { jpayne@69: return functions->IterateOverInstancesOfClass(this, klass, object_filter, heap_object_callback, user_data); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetLocalObject(jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jobject* value_ptr) { jpayne@69: return functions->GetLocalObject(this, thread, depth, slot, value_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetLocalInstance(jthread thread, jpayne@69: jint depth, jpayne@69: jobject* value_ptr) { jpayne@69: return functions->GetLocalInstance(this, thread, depth, value_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetLocalInt(jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jint* value_ptr) { jpayne@69: return functions->GetLocalInt(this, thread, depth, slot, value_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetLocalLong(jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jlong* value_ptr) { jpayne@69: return functions->GetLocalLong(this, thread, depth, slot, value_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetLocalFloat(jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jfloat* value_ptr) { jpayne@69: return functions->GetLocalFloat(this, thread, depth, slot, value_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetLocalDouble(jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jdouble* value_ptr) { jpayne@69: return functions->GetLocalDouble(this, thread, depth, slot, value_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetLocalObject(jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jobject value) { jpayne@69: return functions->SetLocalObject(this, thread, depth, slot, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetLocalInt(jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jint value) { jpayne@69: return functions->SetLocalInt(this, thread, depth, slot, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetLocalLong(jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jlong value) { jpayne@69: return functions->SetLocalLong(this, thread, depth, slot, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetLocalFloat(jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jfloat value) { jpayne@69: return functions->SetLocalFloat(this, thread, depth, slot, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetLocalDouble(jthread thread, jpayne@69: jint depth, jpayne@69: jint slot, jpayne@69: jdouble value) { jpayne@69: return functions->SetLocalDouble(this, thread, depth, slot, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetBreakpoint(jmethodID method, jpayne@69: jlocation location) { jpayne@69: return functions->SetBreakpoint(this, method, location); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ClearBreakpoint(jmethodID method, jpayne@69: jlocation location) { jpayne@69: return functions->ClearBreakpoint(this, method, location); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetFieldAccessWatch(jclass klass, jpayne@69: jfieldID field) { jpayne@69: return functions->SetFieldAccessWatch(this, klass, field); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ClearFieldAccessWatch(jclass klass, jpayne@69: jfieldID field) { jpayne@69: return functions->ClearFieldAccessWatch(this, klass, field); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetFieldModificationWatch(jclass klass, jpayne@69: jfieldID field) { jpayne@69: return functions->SetFieldModificationWatch(this, klass, field); jpayne@69: } jpayne@69: jpayne@69: jvmtiError ClearFieldModificationWatch(jclass klass, jpayne@69: jfieldID field) { jpayne@69: return functions->ClearFieldModificationWatch(this, klass, field); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetAllModules(jint* module_count_ptr, jpayne@69: jobject** modules_ptr) { jpayne@69: return functions->GetAllModules(this, module_count_ptr, modules_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetNamedModule(jobject class_loader, jpayne@69: const char* package_name, jpayne@69: jobject* module_ptr) { jpayne@69: return functions->GetNamedModule(this, class_loader, package_name, module_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError AddModuleReads(jobject module, jpayne@69: jobject to_module) { jpayne@69: return functions->AddModuleReads(this, module, to_module); jpayne@69: } jpayne@69: jpayne@69: jvmtiError AddModuleExports(jobject module, jpayne@69: const char* pkg_name, jpayne@69: jobject to_module) { jpayne@69: return functions->AddModuleExports(this, module, pkg_name, to_module); jpayne@69: } jpayne@69: jpayne@69: jvmtiError AddModuleOpens(jobject module, jpayne@69: const char* pkg_name, jpayne@69: jobject to_module) { jpayne@69: return functions->AddModuleOpens(this, module, pkg_name, to_module); jpayne@69: } jpayne@69: jpayne@69: jvmtiError AddModuleUses(jobject module, jpayne@69: jclass service) { jpayne@69: return functions->AddModuleUses(this, module, service); jpayne@69: } jpayne@69: jpayne@69: jvmtiError AddModuleProvides(jobject module, jpayne@69: jclass service, jpayne@69: jclass impl_class) { jpayne@69: return functions->AddModuleProvides(this, module, service, impl_class); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IsModifiableModule(jobject module, jpayne@69: jboolean* is_modifiable_module_ptr) { jpayne@69: return functions->IsModifiableModule(this, module, is_modifiable_module_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetLoadedClasses(jint* class_count_ptr, jpayne@69: jclass** classes_ptr) { jpayne@69: return functions->GetLoadedClasses(this, class_count_ptr, classes_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetClassLoaderClasses(jobject initiating_loader, jpayne@69: jint* class_count_ptr, jpayne@69: jclass** classes_ptr) { jpayne@69: return functions->GetClassLoaderClasses(this, initiating_loader, class_count_ptr, classes_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetClassSignature(jclass klass, jpayne@69: char** signature_ptr, jpayne@69: char** generic_ptr) { jpayne@69: return functions->GetClassSignature(this, klass, signature_ptr, generic_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetClassStatus(jclass klass, jpayne@69: jint* status_ptr) { jpayne@69: return functions->GetClassStatus(this, klass, status_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetSourceFileName(jclass klass, jpayne@69: char** source_name_ptr) { jpayne@69: return functions->GetSourceFileName(this, klass, source_name_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetClassModifiers(jclass klass, jpayne@69: jint* modifiers_ptr) { jpayne@69: return functions->GetClassModifiers(this, klass, modifiers_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetClassMethods(jclass klass, jpayne@69: jint* method_count_ptr, jpayne@69: jmethodID** methods_ptr) { jpayne@69: return functions->GetClassMethods(this, klass, method_count_ptr, methods_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetClassFields(jclass klass, jpayne@69: jint* field_count_ptr, jpayne@69: jfieldID** fields_ptr) { jpayne@69: return functions->GetClassFields(this, klass, field_count_ptr, fields_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetImplementedInterfaces(jclass klass, jpayne@69: jint* interface_count_ptr, jpayne@69: jclass** interfaces_ptr) { jpayne@69: return functions->GetImplementedInterfaces(this, klass, interface_count_ptr, interfaces_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetClassVersionNumbers(jclass klass, jpayne@69: jint* minor_version_ptr, jpayne@69: jint* major_version_ptr) { jpayne@69: return functions->GetClassVersionNumbers(this, klass, minor_version_ptr, major_version_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetConstantPool(jclass klass, jpayne@69: jint* constant_pool_count_ptr, jpayne@69: jint* constant_pool_byte_count_ptr, jpayne@69: unsigned char** constant_pool_bytes_ptr) { jpayne@69: return functions->GetConstantPool(this, klass, constant_pool_count_ptr, constant_pool_byte_count_ptr, constant_pool_bytes_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IsInterface(jclass klass, jpayne@69: jboolean* is_interface_ptr) { jpayne@69: return functions->IsInterface(this, klass, is_interface_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IsArrayClass(jclass klass, jpayne@69: jboolean* is_array_class_ptr) { jpayne@69: return functions->IsArrayClass(this, klass, is_array_class_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IsModifiableClass(jclass klass, jpayne@69: jboolean* is_modifiable_class_ptr) { jpayne@69: return functions->IsModifiableClass(this, klass, is_modifiable_class_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetClassLoader(jclass klass, jpayne@69: jobject* classloader_ptr) { jpayne@69: return functions->GetClassLoader(this, klass, classloader_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetSourceDebugExtension(jclass klass, jpayne@69: char** source_debug_extension_ptr) { jpayne@69: return functions->GetSourceDebugExtension(this, klass, source_debug_extension_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError RetransformClasses(jint class_count, jpayne@69: const jclass* classes) { jpayne@69: return functions->RetransformClasses(this, class_count, classes); jpayne@69: } jpayne@69: jpayne@69: jvmtiError RedefineClasses(jint class_count, jpayne@69: const jvmtiClassDefinition* class_definitions) { jpayne@69: return functions->RedefineClasses(this, class_count, class_definitions); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetObjectSize(jobject object, jpayne@69: jlong* size_ptr) { jpayne@69: return functions->GetObjectSize(this, object, size_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetObjectHashCode(jobject object, jpayne@69: jint* hash_code_ptr) { jpayne@69: return functions->GetObjectHashCode(this, object, hash_code_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetObjectMonitorUsage(jobject object, jpayne@69: jvmtiMonitorUsage* info_ptr) { jpayne@69: return functions->GetObjectMonitorUsage(this, object, info_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetFieldName(jclass klass, jpayne@69: jfieldID field, jpayne@69: char** name_ptr, jpayne@69: char** signature_ptr, jpayne@69: char** generic_ptr) { jpayne@69: return functions->GetFieldName(this, klass, field, name_ptr, signature_ptr, generic_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetFieldDeclaringClass(jclass klass, jpayne@69: jfieldID field, jpayne@69: jclass* declaring_class_ptr) { jpayne@69: return functions->GetFieldDeclaringClass(this, klass, field, declaring_class_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetFieldModifiers(jclass klass, jpayne@69: jfieldID field, jpayne@69: jint* modifiers_ptr) { jpayne@69: return functions->GetFieldModifiers(this, klass, field, modifiers_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IsFieldSynthetic(jclass klass, jpayne@69: jfieldID field, jpayne@69: jboolean* is_synthetic_ptr) { jpayne@69: return functions->IsFieldSynthetic(this, klass, field, is_synthetic_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetMethodName(jmethodID method, jpayne@69: char** name_ptr, jpayne@69: char** signature_ptr, jpayne@69: char** generic_ptr) { jpayne@69: return functions->GetMethodName(this, method, name_ptr, signature_ptr, generic_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetMethodDeclaringClass(jmethodID method, jpayne@69: jclass* declaring_class_ptr) { jpayne@69: return functions->GetMethodDeclaringClass(this, method, declaring_class_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetMethodModifiers(jmethodID method, jpayne@69: jint* modifiers_ptr) { jpayne@69: return functions->GetMethodModifiers(this, method, modifiers_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetMaxLocals(jmethodID method, jpayne@69: jint* max_ptr) { jpayne@69: return functions->GetMaxLocals(this, method, max_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetArgumentsSize(jmethodID method, jpayne@69: jint* size_ptr) { jpayne@69: return functions->GetArgumentsSize(this, method, size_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetLineNumberTable(jmethodID method, jpayne@69: jint* entry_count_ptr, jpayne@69: jvmtiLineNumberEntry** table_ptr) { jpayne@69: return functions->GetLineNumberTable(this, method, entry_count_ptr, table_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetMethodLocation(jmethodID method, jpayne@69: jlocation* start_location_ptr, jpayne@69: jlocation* end_location_ptr) { jpayne@69: return functions->GetMethodLocation(this, method, start_location_ptr, end_location_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetLocalVariableTable(jmethodID method, jpayne@69: jint* entry_count_ptr, jpayne@69: jvmtiLocalVariableEntry** table_ptr) { jpayne@69: return functions->GetLocalVariableTable(this, method, entry_count_ptr, table_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetBytecodes(jmethodID method, jpayne@69: jint* bytecode_count_ptr, jpayne@69: unsigned char** bytecodes_ptr) { jpayne@69: return functions->GetBytecodes(this, method, bytecode_count_ptr, bytecodes_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IsMethodNative(jmethodID method, jpayne@69: jboolean* is_native_ptr) { jpayne@69: return functions->IsMethodNative(this, method, is_native_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IsMethodSynthetic(jmethodID method, jpayne@69: jboolean* is_synthetic_ptr) { jpayne@69: return functions->IsMethodSynthetic(this, method, is_synthetic_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError IsMethodObsolete(jmethodID method, jpayne@69: jboolean* is_obsolete_ptr) { jpayne@69: return functions->IsMethodObsolete(this, method, is_obsolete_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetNativeMethodPrefix(const char* prefix) { jpayne@69: return functions->SetNativeMethodPrefix(this, prefix); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetNativeMethodPrefixes(jint prefix_count, jpayne@69: char** prefixes) { jpayne@69: return functions->SetNativeMethodPrefixes(this, prefix_count, prefixes); jpayne@69: } jpayne@69: jpayne@69: jvmtiError CreateRawMonitor(const char* name, jpayne@69: jrawMonitorID* monitor_ptr) { jpayne@69: return functions->CreateRawMonitor(this, name, monitor_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError DestroyRawMonitor(jrawMonitorID monitor) { jpayne@69: return functions->DestroyRawMonitor(this, monitor); jpayne@69: } jpayne@69: jpayne@69: jvmtiError RawMonitorEnter(jrawMonitorID monitor) { jpayne@69: return functions->RawMonitorEnter(this, monitor); jpayne@69: } jpayne@69: jpayne@69: jvmtiError RawMonitorExit(jrawMonitorID monitor) { jpayne@69: return functions->RawMonitorExit(this, monitor); jpayne@69: } jpayne@69: jpayne@69: jvmtiError RawMonitorWait(jrawMonitorID monitor, jpayne@69: jlong millis) { jpayne@69: return functions->RawMonitorWait(this, monitor, millis); jpayne@69: } jpayne@69: jpayne@69: jvmtiError RawMonitorNotify(jrawMonitorID monitor) { jpayne@69: return functions->RawMonitorNotify(this, monitor); jpayne@69: } jpayne@69: jpayne@69: jvmtiError RawMonitorNotifyAll(jrawMonitorID monitor) { jpayne@69: return functions->RawMonitorNotifyAll(this, monitor); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetJNIFunctionTable(const jniNativeInterface* function_table) { jpayne@69: return functions->SetJNIFunctionTable(this, function_table); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetJNIFunctionTable(jniNativeInterface** function_table) { jpayne@69: return functions->GetJNIFunctionTable(this, function_table); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetEventCallbacks(const jvmtiEventCallbacks* callbacks, jpayne@69: jint size_of_callbacks) { jpayne@69: return functions->SetEventCallbacks(this, callbacks, size_of_callbacks); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetEventNotificationMode(jvmtiEventMode mode, jpayne@69: jvmtiEvent event_type, jpayne@69: jthread event_thread, jpayne@69: ...) { jpayne@69: return functions->SetEventNotificationMode(this, mode, event_type, event_thread); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GenerateEvents(jvmtiEvent event_type) { jpayne@69: return functions->GenerateEvents(this, event_type); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetExtensionFunctions(jint* extension_count_ptr, jpayne@69: jvmtiExtensionFunctionInfo** extensions) { jpayne@69: return functions->GetExtensionFunctions(this, extension_count_ptr, extensions); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetExtensionEvents(jint* extension_count_ptr, jpayne@69: jvmtiExtensionEventInfo** extensions) { jpayne@69: return functions->GetExtensionEvents(this, extension_count_ptr, extensions); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetExtensionEventCallback(jint extension_event_index, jpayne@69: jvmtiExtensionEvent callback) { jpayne@69: return functions->SetExtensionEventCallback(this, extension_event_index, callback); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetPotentialCapabilities(jvmtiCapabilities* capabilities_ptr) { jpayne@69: return functions->GetPotentialCapabilities(this, capabilities_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError AddCapabilities(const jvmtiCapabilities* capabilities_ptr) { jpayne@69: return functions->AddCapabilities(this, capabilities_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError RelinquishCapabilities(const jvmtiCapabilities* capabilities_ptr) { jpayne@69: return functions->RelinquishCapabilities(this, capabilities_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetCapabilities(jvmtiCapabilities* capabilities_ptr) { jpayne@69: return functions->GetCapabilities(this, capabilities_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetCurrentThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) { jpayne@69: return functions->GetCurrentThreadCpuTimerInfo(this, info_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetCurrentThreadCpuTime(jlong* nanos_ptr) { jpayne@69: return functions->GetCurrentThreadCpuTime(this, nanos_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) { jpayne@69: return functions->GetThreadCpuTimerInfo(this, info_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetThreadCpuTime(jthread thread, jpayne@69: jlong* nanos_ptr) { jpayne@69: return functions->GetThreadCpuTime(this, thread, nanos_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetTimerInfo(jvmtiTimerInfo* info_ptr) { jpayne@69: return functions->GetTimerInfo(this, info_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetTime(jlong* nanos_ptr) { jpayne@69: return functions->GetTime(this, nanos_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetAvailableProcessors(jint* processor_count_ptr) { jpayne@69: return functions->GetAvailableProcessors(this, processor_count_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) { jpayne@69: return functions->AddToBootstrapClassLoaderSearch(this, segment); jpayne@69: } jpayne@69: jpayne@69: jvmtiError AddToSystemClassLoaderSearch(const char* segment) { jpayne@69: return functions->AddToSystemClassLoaderSearch(this, segment); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetSystemProperties(jint* count_ptr, jpayne@69: char*** property_ptr) { jpayne@69: return functions->GetSystemProperties(this, count_ptr, property_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetSystemProperty(const char* property, jpayne@69: char** value_ptr) { jpayne@69: return functions->GetSystemProperty(this, property, value_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetSystemProperty(const char* property, jpayne@69: const char* value_ptr) { jpayne@69: return functions->SetSystemProperty(this, property, value_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetPhase(jvmtiPhase* phase_ptr) { jpayne@69: return functions->GetPhase(this, phase_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError DisposeEnvironment() { jpayne@69: return functions->DisposeEnvironment(this); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetEnvironmentLocalStorage(const void* data) { jpayne@69: return functions->SetEnvironmentLocalStorage(this, data); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetEnvironmentLocalStorage(void** data_ptr) { jpayne@69: return functions->GetEnvironmentLocalStorage(this, data_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetVersionNumber(jint* version_ptr) { jpayne@69: return functions->GetVersionNumber(this, version_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetErrorName(jvmtiError error, jpayne@69: char** name_ptr) { jpayne@69: return functions->GetErrorName(this, error, name_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetVerboseFlag(jvmtiVerboseFlag flag, jpayne@69: jboolean value) { jpayne@69: return functions->SetVerboseFlag(this, flag, value); jpayne@69: } jpayne@69: jpayne@69: jvmtiError GetJLocationFormat(jvmtiJlocationFormat* format_ptr) { jpayne@69: return functions->GetJLocationFormat(this, format_ptr); jpayne@69: } jpayne@69: jpayne@69: jvmtiError SetHeapSamplingInterval(jint sampling_interval) { jpayne@69: return functions->SetHeapSamplingInterval(this, sampling_interval); jpayne@69: } jpayne@69: jpayne@69: #endif /* __cplusplus */ jpayne@69: }; jpayne@69: jpayne@69: jpayne@69: #ifdef __cplusplus jpayne@69: } /* extern "C" */ jpayne@69: #endif /* __cplusplus */ jpayne@69: jpayne@69: #endif /* !_JAVA_JVMTI_H_ */