/* * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.sun.max.vm.ext.jvmti; /** * Dump of all the constants in jvmti.h. * Ideally, these would be distributed to the specific implementation classes. */ public class JVMTIConstants { public static final int JVMTI_VERSION_1 = 0x30010000; public static final int JVMTI_VERSION_1_0 = 0x30010000; public static final int JVMTI_VERSION_1_1 = 0x30010100; public static final int JVMTI_VERSION = 0x30000000 + (1 * 0x10000) + (2 * 0x100) + 1; // version: 1.2.1 public static final int JVMTI_THREAD_STATE_ALIVE = 0x0001; public static final int JVMTI_THREAD_STATE_TERMINATED = 0x0002; public static final int JVMTI_THREAD_STATE_RUNNABLE = 0x0004; public static final int JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400; public static final int JVMTI_THREAD_STATE_WAITING = 0x0080; public static final int JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010; public static final int JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020; public static final int JVMTI_THREAD_STATE_SLEEPING = 0x0040; public static final int JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100; public static final int JVMTI_THREAD_STATE_PARKED = 0x0200; public static final int JVMTI_THREAD_STATE_SUSPENDED = 0x100000; public static final int JVMTI_THREAD_STATE_INTERRUPTED = 0x200000; public static final int JVMTI_THREAD_STATE_IN_NATIVE = 0x400000; public static final int JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000; public static final int JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000; public static final int JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000; // java.lang.Thread.State Conversion Masks public static final int 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; public static final int JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0; public static final int JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED; public static final int JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE; public static final int JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER; public static final int JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY; public static final int JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT; // Thread Priority Constants public static final int JVMTI_THREAD_MIN_PRIORITY = 1; public static final int JVMTI_THREAD_NORM_PRIORITY = 5; public static final int JVMTI_THREAD_MAX_PRIORITY = 10; // Heap Filter Flags public static final int JVMTI_HEAP_FILTER_TAGGED = 0x4; public static final int JVMTI_HEAP_FILTER_UNTAGGED = 0x8; public static final int JVMTI_HEAP_FILTER_CLASS_TAGGED = 0x10; public static final int JVMTI_HEAP_FILTER_CLASS_UNTAGGED = 0x20; // Heap Visit Control Flags public static final int JVMTI_VISIT_OBJECTS = 0x100; public static final int JVMTI_VISIT_ABORT = 0x8000; // Heap Reference Enumeration public static final int JVMTI_HEAP_REFERENCE_CLASS = 1; public static final int JVMTI_HEAP_REFERENCE_FIELD = 2; public static final int JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT = 3; public static final int JVMTI_HEAP_REFERENCE_CLASS_LOADER = 4; public static final int JVMTI_HEAP_REFERENCE_SIGNERS = 5; public static final int JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN = 6; public static final int JVMTI_HEAP_REFERENCE_INTERFACE = 7; public static final int JVMTI_HEAP_REFERENCE_STATIC_FIELD = 8; public static final int JVMTI_HEAP_REFERENCE_CONSTANT_POOL = 9; public static final int JVMTI_HEAP_REFERENCE_SUPERCLASS = 10; public static final int JVMTI_HEAP_REFERENCE_JNI_GLOBAL = 21; public static final int JVMTI_HEAP_REFERENCE_SYSTEM_CLASS = 22; public static final int JVMTI_HEAP_REFERENCE_MONITOR = 23; public static final int JVMTI_HEAP_REFERENCE_STACK_LOCAL = 24; public static final int JVMTI_HEAP_REFERENCE_JNI_LOCAL = 25; public static final int JVMTI_HEAP_REFERENCE_THREAD = 26; public static final int JVMTI_HEAP_REFERENCE_OTHER = 27; // Primitive Type Enumeration public static final int JVMTI_PRIMITIVE_TYPE_BOOLEAN = 90; public static final int JVMTI_PRIMITIVE_TYPE_BYTE = 66; public static final int JVMTI_PRIMITIVE_TYPE_CHAR = 67; public static final int JVMTI_PRIMITIVE_TYPE_SHORT = 83; public static final int JVMTI_PRIMITIVE_TYPE_INT = 73; public static final int JVMTI_PRIMITIVE_TYPE_LONG = 74; public static final int JVMTI_PRIMITIVE_TYPE_FLOAT = 70; public static final int JVMTI_PRIMITIVE_TYPE_DOUBLE = 68; // Heap Object Filter Enumeration public static final int JVMTI_HEAP_OBJECT_TAGGED = 1; public static final int JVMTI_HEAP_OBJECT_UNTAGGED = 2; public static final int JVMTI_HEAP_OBJECT_EITHER = 3; // Heap Root Kind Enumeration public static final int JVMTI_HEAP_ROOT_JNI_GLOBAL = 1; public static final int JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2; public static final int JVMTI_HEAP_ROOT_MONITOR = 3; public static final int JVMTI_HEAP_ROOT_STACK_LOCAL = 4; public static final int JVMTI_HEAP_ROOT_JNI_LOCAL = 5; public static final int JVMTI_HEAP_ROOT_THREAD = 6; public static final int JVMTI_HEAP_ROOT_OTHER = 7; // Object Reference Enumeration public static final int JVMTI_REFERENCE_CLASS = 1; public static final int JVMTI_REFERENCE_FIELD = 2; public static final int JVMTI_REFERENCE_ARRAY_ELEMENT = 3; public static final int JVMTI_REFERENCE_CLASS_LOADER = 4; public static final int JVMTI_REFERENCE_SIGNERS = 5; public static final int JVMTI_REFERENCE_PROTECTION_DOMAIN = 6; public static final int JVMTI_REFERENCE_INTERFACE = 7; public static final int JVMTI_REFERENCE_STATIC_FIELD = 8; public static final int JVMTI_REFERENCE_CONSTANT_POOL = 9; // Iteration Control Enumeration public static final int JVMTI_ITERATION_CONTINUE = 1; public static final int JVMTI_ITERATION_IGNORE = 2; public static final int JVMTI_ITERATION_ABORT = 0; // Class Status Flags public static final int JVMTI_CLASS_STATUS_VERIFIED = 1; public static final int JVMTI_CLASS_STATUS_PREPARED = 2; public static final int JVMTI_CLASS_STATUS_INITIALIZED = 4; public static final int JVMTI_CLASS_STATUS_ERROR = 8; public static final int JVMTI_CLASS_STATUS_ARRAY = 16; public static final int JVMTI_CLASS_STATUS_PRIMITIVE = 32; // Event Enable/Disable public static final int JVMTI_ENABLE = 1; public static final int JVMTI_DISABLE = 0; // Extension Function/Event Parameter Types public static final int JVMTI_TYPE_JBYTE = 101; public static final int JVMTI_TYPE_JCHAR = 102; public static final int JVMTI_TYPE_JSHORT = 103; public static final int JVMTI_TYPE_JINT = 104; public static final int JVMTI_TYPE_JLONG = 105; public static final int JVMTI_TYPE_JFLOAT = 106; public static final int JVMTI_TYPE_JDOUBLE = 107; public static final int JVMTI_TYPE_JBOOLEAN = 108; public static final int JVMTI_TYPE_JOBJECT = 109; public static final int JVMTI_TYPE_JTHREAD = 110; public static final int JVMTI_TYPE_JCLASS = 111; public static final int JVMTI_TYPE_JVALUE = 112; public static final int JVMTI_TYPE_JFIELDID = 113; public static final int JVMTI_TYPE_JMETHODID = 114; public static final int JVMTI_TYPE_CCHAR = 115; public static final int JVMTI_TYPE_CVOID = 116; public static final int JVMTI_TYPE_JNIENV = 117; // Extension Function/Event Parameter Kinds public static final int JVMTI_KIND_IN = 91; public static final int JVMTI_KIND_IN_PTR = 92; public static final int JVMTI_KIND_IN_BUF = 93; public static final int JVMTI_KIND_ALLOC_BUF = 94; public static final int JVMTI_KIND_ALLOC_ALLOC_BUF = 95; public static final int JVMTI_KIND_OUT = 96; public static final int JVMTI_KIND_OUT_BUF = 97; // Timer Kinds public static final int JVMTI_TIMER_USER_CPU = 30; public static final int JVMTI_TIMER_TOTAL_CPU = 31; public static final int JVMTI_TIMER_ELAPSED = 32; // Phases of execution public static final int JVMTI_PHASE_ONLOAD = 1; public static final int JVMTI_PHASE_PRIMORDIAL = 2; public static final int JVMTI_PHASE_START_ORIG = 6; // We change this so that all the values are distinct bits for masking purposes. // If the agent asks for the phase we make sure to give back the ORIG value public static final int JVMTI_PHASE_START = 16; public static final int JVMTI_PHASE_LIVE = 4; public static final int JVMTI_PHASE_DEAD = 8; // Version Interface Types public static final int JVMTI_VERSION_INTERFACE_JNI = 0x00000000; public static final int JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000; // Version Masks public static final int JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000; public static final int JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000; public static final int JVMTI_VERSION_MASK_MINOR = 0x0000FF00; public static final int JVMTI_VERSION_MASK_MICRO = 0x000000FF; // Version Shifts public static final int JVMTI_VERSION_SHIFT_MAJOR = 16; public static final int JVMTI_VERSION_SHIFT_MINOR = 8; public static final int JVMTI_VERSION_SHIFT_MICRO = 0; // Verbose Flag Enumeration public static final int JVMTI_VERBOSE_OTHER = 0; public static final int JVMTI_VERBOSE_GC = 1; public static final int JVMTI_VERBOSE_CLASS = 2; public static final int JVMTI_VERBOSE_JNI = 4; // JLocation Format Enumeration public static final int JVMTI_JLOCATION_JVMBCI = 1; public static final int JVMTI_JLOCATION_MACHINEPC = 2; public static final int JVMTI_JLOCATION_OTHER = 0; // Resource Exhaustion Flags public static final int JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR = 0x0001; public static final int JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP = 0x0002; public static final int JVMTI_RESOURCE_EXHAUSTED_THREADS = 0x0004; // Errors public static final int JVMTI_ERROR_NONE = 0; public static final int JVMTI_ERROR_INVALID_THREAD = 10; public static final int JVMTI_ERROR_INVALID_THREAD_GROUP = 11; public static final int JVMTI_ERROR_INVALID_PRIORITY = 12; public static final int JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13; public static final int JVMTI_ERROR_THREAD_SUSPENDED = 14; public static final int JVMTI_ERROR_THREAD_NOT_ALIVE = 15; public static final int JVMTI_ERROR_INVALID_OBJECT = 20; public static final int JVMTI_ERROR_INVALID_CLASS = 21; public static final int JVMTI_ERROR_CLASS_NOT_PREPARED = 22; public static final int JVMTI_ERROR_INVALID_METHODID = 23; public static final int JVMTI_ERROR_INVALID_LOCATION = 24; public static final int JVMTI_ERROR_INVALID_FIELDID = 25; public static final int JVMTI_ERROR_NO_MORE_FRAMES = 31; public static final int JVMTI_ERROR_OPAQUE_FRAME = 32; public static final int JVMTI_ERROR_TYPE_MISMATCH = 34; public static final int JVMTI_ERROR_INVALID_SLOT = 35; public static final int JVMTI_ERROR_DUPLICATE = 40; public static final int JVMTI_ERROR_NOT_FOUND = 41; public static final int JVMTI_ERROR_INVALID_MONITOR = 50; public static final int JVMTI_ERROR_NOT_MONITOR_OWNER = 51; public static final int JVMTI_ERROR_INTERRUPT = 52; public static final int JVMTI_ERROR_INVALID_CLASS_FORMAT = 60; public static final int JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61; public static final int JVMTI_ERROR_FAILS_VERIFICATION = 62; public static final int JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63; public static final int JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64; public static final int JVMTI_ERROR_INVALID_TYPESTATE = 65; public static final int JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66; public static final int JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67; public static final int JVMTI_ERROR_UNSUPPORTED_VERSION = 68; public static final int JVMTI_ERROR_NAMES_DONT_MATCH = 69; public static final int JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70; public static final int JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71; public static final int JVMTI_ERROR_UNMODIFIABLE_CLASS = 79; public static final int JVMTI_ERROR_NOT_AVAILABLE = 98; public static final int JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99; public static final int JVMTI_ERROR_NULL_POINTER = 100; public static final int JVMTI_ERROR_ABSENT_INFORMATION = 101; public static final int JVMTI_ERROR_INVALID_EVENT_TYPE = 102; public static final int JVMTI_ERROR_ILLEGAL_ARGUMENT = 103; public static final int JVMTI_ERROR_NATIVE_METHOD = 104; public static final int JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED = 106; public static final int JVMTI_ERROR_OUT_OF_MEMORY = 110; public static final int JVMTI_ERROR_ACCESS_DENIED = 111; public static final int JVMTI_ERROR_WRONG_PHASE = 112; public static final int JVMTI_ERROR_INTERNAL = 113; public static final int JVMTI_ERROR_UNATTACHED_THREAD = 115; public static final int JVMTI_ERROR_INVALID_ENVIRONMENT = 116; public static final int JVMTI_ERROR_MAX = 116; // Event IDs public static final int JVMTI_MIN_EVENT_TYPE_VAL = 50; public static final int JVMTI_EVENT_VM_INIT = 50; public static final int JVMTI_EVENT_VM_DEATH = 51; public static final int JVMTI_EVENT_THREAD_START = 52; public static final int JVMTI_EVENT_THREAD_END = 53; public static final int JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54; public static final int JVMTI_EVENT_CLASS_LOAD = 55; public static final int JVMTI_EVENT_CLASS_PREPARE = 56; public static final int JVMTI_EVENT_VM_START = 57; public static final int JVMTI_EVENT_EXCEPTION = 58; public static final int JVMTI_EVENT_EXCEPTION_CATCH = 59; public static final int JVMTI_EVENT_SINGLE_STEP = 60; public static final int JVMTI_EVENT_FRAME_POP = 61; public static final int JVMTI_EVENT_BREAKPOINT = 62; public static final int JVMTI_EVENT_FIELD_ACCESS = 63; public static final int JVMTI_EVENT_FIELD_MODIFICATION = 64; public static final int JVMTI_EVENT_METHOD_ENTRY = 65; public static final int JVMTI_EVENT_METHOD_EXIT = 66; public static final int JVMTI_EVENT_NATIVE_METHOD_BIND = 67; public static final int JVMTI_EVENT_COMPILED_METHOD_LOAD = 68; public static final int JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69; public static final int JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70; public static final int JVMTI_EVENT_DATA_DUMP_REQUEST = 71; public static final int JVMTI_EVENT_MONITOR_WAIT = 73; public static final int JVMTI_EVENT_MONITOR_WAITED = 74; public static final int JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75; public static final int JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76; public static final int JVMTI_EVENT_RESOURCE_EXHAUSTED = 80; public static final int JVMTI_EVENT_GARBAGE_COLLECTION_START = 81; public static final int JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82; public static final int JVMTI_EVENT_OBJECT_FREE = 83; public static final int JVMTI_EVENT_VM_OBJECT_ALLOC = 84; public static final int JVMTI_MAX_EVENT_TYPE_VAL = 84; }