| /* |
| * 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_ |