/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * These come out of the JDWP documentation. */ #ifndef ART_RUNTIME_JDWP_JDWP_CONSTANTS_H_ #define ART_RUNTIME_JDWP_JDWP_CONSTANTS_H_ #include <iosfwd> namespace art { namespace JDWP { /* * Error constants. */ enum JdwpError { ERR_NONE = 0, ERR_INVALID_THREAD = 10, ERR_INVALID_THREAD_GROUP = 11, ERR_INVALID_PRIORITY = 12, ERR_THREAD_NOT_SUSPENDED = 13, ERR_THREAD_SUSPENDED = 14, ERR_THREAD_NOT_ALIVE = 15, ERR_INVALID_OBJECT = 20, ERR_INVALID_CLASS = 21, ERR_CLASS_NOT_PREPARED = 22, ERR_INVALID_METHODID = 23, ERR_INVALID_LOCATION = 24, ERR_INVALID_FIELDID = 25, ERR_INVALID_FRAMEID = 30, ERR_NO_MORE_FRAMES = 31, ERR_OPAQUE_FRAME = 32, ERR_NOT_CURRENT_FRAME = 33, ERR_TYPE_MISMATCH = 34, ERR_INVALID_SLOT = 35, ERR_DUPLICATE = 40, ERR_NOT_FOUND = 41, ERR_INVALID_MONITOR = 50, ERR_NOT_MONITOR_OWNER = 51, ERR_INTERRUPT = 52, ERR_INVALID_CLASS_FORMAT = 60, ERR_CIRCULAR_CLASS_DEFINITION = 61, ERR_FAILS_VERIFICATION = 62, ERR_ADD_METHOD_NOT_IMPLEMENTED = 63, ERR_SCHEMA_CHANGE_NOT_IMPLEMENTED = 64, ERR_INVALID_TYPESTATE = 65, ERR_HIERARCHY_CHANGE_NOT_IMPLEMENTED = 66, ERR_DELETE_METHOD_NOT_IMPLEMENTED = 67, ERR_UNSUPPORTED_VERSION = 68, ERR_NAMES_DONT_MATCH = 69, ERR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 70, ERR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 71, ERR_NOT_IMPLEMENTED = 99, ERR_NULL_POINTER = 100, ERR_ABSENT_INFORMATION = 101, ERR_INVALID_EVENT_TYPE = 102, ERR_ILLEGAL_ARGUMENT = 103, ERR_OUT_OF_MEMORY = 110, ERR_ACCESS_DENIED = 111, ERR_VM_DEAD = 112, ERR_INTERNAL = 113, ERR_UNATTACHED_THREAD = 115, ERR_INVALID_TAG = 500, ERR_ALREADY_INVOKING = 502, ERR_INVALID_INDEX = 503, ERR_INVALID_LENGTH = 504, ERR_INVALID_STRING = 506, ERR_INVALID_CLASS_LOADER = 507, ERR_INVALID_ARRAY = 508, ERR_TRANSPORT_LOAD = 509, ERR_TRANSPORT_INIT = 510, ERR_NATIVE_METHOD = 511, ERR_INVALID_COUNT = 512, }; std::ostream& operator<<(std::ostream& os, const JdwpError& value); /* * ClassStatus constants. These are bit flags that can be ORed together. */ enum JdwpClassStatus { CS_VERIFIED = 0x01, CS_PREPARED = 0x02, CS_INITIALIZED = 0x04, CS_ERROR = 0x08, }; std::ostream& operator<<(std::ostream& os, const JdwpClassStatus& value); /* * EventKind constants. */ enum JdwpEventKind { EK_SINGLE_STEP = 1, EK_BREAKPOINT = 2, EK_FRAME_POP = 3, EK_EXCEPTION = 4, EK_USER_DEFINED = 5, EK_THREAD_START = 6, EK_THREAD_DEATH = 7, // Formerly known as THREAD_END. EK_CLASS_PREPARE = 8, EK_CLASS_UNLOAD = 9, EK_CLASS_LOAD = 10, EK_FIELD_ACCESS = 20, EK_FIELD_MODIFICATION = 21, EK_EXCEPTION_CATCH = 30, EK_METHOD_ENTRY = 40, EK_METHOD_EXIT = 41, EK_METHOD_EXIT_WITH_RETURN_VALUE = 42, EK_MONITOR_CONTENDED_ENTER = 43, EK_MONITOR_CONTENDED_ENTERED = 44, EK_MONITOR_WAIT = 45, EK_MONITOR_WAITED = 46, EK_VM_START = 90, // Formerly known as VM_INIT. EK_VM_DEATH = 99, EK_VM_DISCONNECTED = 100, // "Never sent across JDWP". }; std::ostream& operator<<(std::ostream& os, const JdwpEventKind& value); /* * Values for "modKind" in EventRequest.Set. */ enum JdwpModKind { MK_COUNT = 1, MK_CONDITIONAL = 2, MK_THREAD_ONLY = 3, MK_CLASS_ONLY = 4, MK_CLASS_MATCH = 5, MK_CLASS_EXCLUDE = 6, MK_LOCATION_ONLY = 7, MK_EXCEPTION_ONLY = 8, MK_FIELD_ONLY = 9, MK_STEP = 10, MK_INSTANCE_ONLY = 11, MK_SOURCE_NAME_MATCH = 12, // Since Java 6. }; std::ostream& operator<<(std::ostream& os, const JdwpModKind& value); /* * InvokeOptions constants (bit flags). */ enum JdwpInvokeOptions { INVOKE_SINGLE_THREADED = 0x01, INVOKE_NONVIRTUAL = 0x02, }; std::ostream& operator<<(std::ostream& os, const JdwpInvokeOptions& value); /* * StepDepth constants. */ enum JdwpStepDepth { SD_INTO = 0, // Step into method calls. SD_OVER = 1, // Step over method calls. SD_OUT = 2, // Step out of current method. }; std::ostream& operator<<(std::ostream& os, const JdwpStepDepth& value); /* * StepSize constants. */ enum JdwpStepSize { SS_MIN = 0, // Step by minimum (for example, one bytecode). SS_LINE = 1, // If possible, step to next line. }; std::ostream& operator<<(std::ostream& os, const JdwpStepSize& value); /* * SuspendPolicy constants. */ enum JdwpSuspendPolicy { SP_NONE = 0, // Suspend no threads. SP_EVENT_THREAD = 1, // Suspend event thread. SP_ALL = 2, // Suspend all threads. }; std::ostream& operator<<(std::ostream& os, const JdwpSuspendPolicy& value); /* * SuspendStatus constants. */ enum JdwpSuspendStatus { SUSPEND_STATUS_NOT_SUSPENDED = 0, SUSPEND_STATUS_SUSPENDED = 1, }; std::ostream& operator<<(std::ostream& os, const JdwpSuspendStatus& value); /* * ThreadStatus constants. */ enum JdwpThreadStatus { TS_ZOMBIE = 0, TS_RUNNING = 1, // RUNNING TS_SLEEPING = 2, // (in Thread.sleep()) TS_MONITOR = 3, // WAITING (monitor wait) TS_WAIT = 4, // (in Object.wait()) }; std::ostream& operator<<(std::ostream& os, const JdwpThreadStatus& value); /* * TypeTag constants. */ enum JdwpTypeTag { TT_CLASS = 1, TT_INTERFACE = 2, TT_ARRAY = 3, }; std::ostream& operator<<(std::ostream& os, const JdwpTypeTag& value); /* * Tag constants. */ enum JdwpTag { JT_ARRAY = '[', JT_BYTE = 'B', JT_CHAR = 'C', JT_OBJECT = 'L', JT_FLOAT = 'F', JT_DOUBLE = 'D', JT_INT = 'I', JT_LONG = 'J', JT_SHORT = 'S', JT_VOID = 'V', JT_BOOLEAN = 'Z', JT_STRING = 's', JT_THREAD = 't', JT_THREAD_GROUP = 'g', JT_CLASS_LOADER = 'l', JT_CLASS_OBJECT = 'c', }; std::ostream& operator<<(std::ostream& os, const JdwpTag& value); } // namespace JDWP } // namespace art #endif // ART_RUNTIME_JDWP_JDWP_CONSTANTS_H_