Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2008 The Android Open Source Project |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | /* |
| 17 | * These come out of the JDWP documentation. |
| 18 | */ |
Brian Carlstrom | fc0e321 | 2013-07-17 14:40:12 -0700 | [diff] [blame] | 19 | #ifndef ART_RUNTIME_JDWP_JDWP_CONSTANTS_H_ |
| 20 | #define ART_RUNTIME_JDWP_JDWP_CONSTANTS_H_ |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 21 | |
| 22 | #include <iosfwd> |
| 23 | |
| 24 | namespace art { |
| 25 | |
| 26 | namespace JDWP { |
| 27 | |
| 28 | /* |
| 29 | * Error constants. |
| 30 | */ |
| 31 | enum JdwpError { |
| 32 | ERR_NONE = 0, |
| 33 | ERR_INVALID_THREAD = 10, |
| 34 | ERR_INVALID_THREAD_GROUP = 11, |
| 35 | ERR_INVALID_PRIORITY = 12, |
| 36 | ERR_THREAD_NOT_SUSPENDED = 13, |
| 37 | ERR_THREAD_SUSPENDED = 14, |
Elliott Hughes | 7b3cdfc | 2011-12-08 21:28:17 -0800 | [diff] [blame] | 38 | ERR_THREAD_NOT_ALIVE = 15, |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 39 | ERR_INVALID_OBJECT = 20, |
| 40 | ERR_INVALID_CLASS = 21, |
| 41 | ERR_CLASS_NOT_PREPARED = 22, |
| 42 | ERR_INVALID_METHODID = 23, |
| 43 | ERR_INVALID_LOCATION = 24, |
| 44 | ERR_INVALID_FIELDID = 25, |
| 45 | ERR_INVALID_FRAMEID = 30, |
| 46 | ERR_NO_MORE_FRAMES = 31, |
| 47 | ERR_OPAQUE_FRAME = 32, |
| 48 | ERR_NOT_CURRENT_FRAME = 33, |
| 49 | ERR_TYPE_MISMATCH = 34, |
| 50 | ERR_INVALID_SLOT = 35, |
| 51 | ERR_DUPLICATE = 40, |
| 52 | ERR_NOT_FOUND = 41, |
| 53 | ERR_INVALID_MONITOR = 50, |
| 54 | ERR_NOT_MONITOR_OWNER = 51, |
| 55 | ERR_INTERRUPT = 52, |
| 56 | ERR_INVALID_CLASS_FORMAT = 60, |
| 57 | ERR_CIRCULAR_CLASS_DEFINITION = 61, |
| 58 | ERR_FAILS_VERIFICATION = 62, |
| 59 | ERR_ADD_METHOD_NOT_IMPLEMENTED = 63, |
| 60 | ERR_SCHEMA_CHANGE_NOT_IMPLEMENTED = 64, |
| 61 | ERR_INVALID_TYPESTATE = 65, |
| 62 | ERR_HIERARCHY_CHANGE_NOT_IMPLEMENTED = 66, |
| 63 | ERR_DELETE_METHOD_NOT_IMPLEMENTED = 67, |
| 64 | ERR_UNSUPPORTED_VERSION = 68, |
| 65 | ERR_NAMES_DONT_MATCH = 69, |
| 66 | ERR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 70, |
| 67 | ERR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 71, |
| 68 | ERR_NOT_IMPLEMENTED = 99, |
| 69 | ERR_NULL_POINTER = 100, |
| 70 | ERR_ABSENT_INFORMATION = 101, |
| 71 | ERR_INVALID_EVENT_TYPE = 102, |
| 72 | ERR_ILLEGAL_ARGUMENT = 103, |
| 73 | ERR_OUT_OF_MEMORY = 110, |
| 74 | ERR_ACCESS_DENIED = 111, |
| 75 | ERR_VM_DEAD = 112, |
| 76 | ERR_INTERNAL = 113, |
| 77 | ERR_UNATTACHED_THREAD = 115, |
| 78 | ERR_INVALID_TAG = 500, |
| 79 | ERR_ALREADY_INVOKING = 502, |
| 80 | ERR_INVALID_INDEX = 503, |
| 81 | ERR_INVALID_LENGTH = 504, |
| 82 | ERR_INVALID_STRING = 506, |
| 83 | ERR_INVALID_CLASS_LOADER = 507, |
| 84 | ERR_INVALID_ARRAY = 508, |
| 85 | ERR_TRANSPORT_LOAD = 509, |
| 86 | ERR_TRANSPORT_INIT = 510, |
| 87 | ERR_NATIVE_METHOD = 511, |
| 88 | ERR_INVALID_COUNT = 512, |
| 89 | }; |
| 90 | std::ostream& operator<<(std::ostream& os, const JdwpError& value); |
| 91 | |
| 92 | |
| 93 | /* |
| 94 | * ClassStatus constants. These are bit flags that can be ORed together. |
| 95 | */ |
| 96 | enum JdwpClassStatus { |
| 97 | CS_VERIFIED = 0x01, |
| 98 | CS_PREPARED = 0x02, |
| 99 | CS_INITIALIZED = 0x04, |
| 100 | CS_ERROR = 0x08, |
| 101 | }; |
| 102 | std::ostream& operator<<(std::ostream& os, const JdwpClassStatus& value); |
| 103 | |
| 104 | /* |
| 105 | * EventKind constants. |
| 106 | */ |
| 107 | enum JdwpEventKind { |
| 108 | EK_SINGLE_STEP = 1, |
| 109 | EK_BREAKPOINT = 2, |
| 110 | EK_FRAME_POP = 3, |
| 111 | EK_EXCEPTION = 4, |
| 112 | EK_USER_DEFINED = 5, |
| 113 | EK_THREAD_START = 6, |
Brian Carlstrom | 7934ac2 | 2013-07-26 10:54:15 -0700 | [diff] [blame] | 114 | EK_THREAD_DEATH = 7, // Formerly known as THREAD_END. |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 115 | EK_CLASS_PREPARE = 8, |
| 116 | EK_CLASS_UNLOAD = 9, |
| 117 | EK_CLASS_LOAD = 10, |
| 118 | EK_FIELD_ACCESS = 20, |
| 119 | EK_FIELD_MODIFICATION = 21, |
| 120 | EK_EXCEPTION_CATCH = 30, |
| 121 | EK_METHOD_ENTRY = 40, |
| 122 | EK_METHOD_EXIT = 41, |
Elliott Hughes | 7b3cdfc | 2011-12-08 21:28:17 -0800 | [diff] [blame] | 123 | EK_METHOD_EXIT_WITH_RETURN_VALUE = 42, |
| 124 | EK_MONITOR_CONTENDED_ENTER = 43, |
| 125 | EK_MONITOR_CONTENDED_ENTERED = 44, |
| 126 | EK_MONITOR_WAIT = 45, |
| 127 | EK_MONITOR_WAITED = 46, |
Brian Carlstrom | 7934ac2 | 2013-07-26 10:54:15 -0700 | [diff] [blame] | 128 | EK_VM_START = 90, // Formerly known as VM_INIT. |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 129 | EK_VM_DEATH = 99, |
Brian Carlstrom | 7934ac2 | 2013-07-26 10:54:15 -0700 | [diff] [blame] | 130 | EK_VM_DISCONNECTED = 100, // "Never sent across JDWP". |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 131 | }; |
| 132 | std::ostream& operator<<(std::ostream& os, const JdwpEventKind& value); |
| 133 | |
| 134 | /* |
| 135 | * Values for "modKind" in EventRequest.Set. |
| 136 | */ |
| 137 | enum JdwpModKind { |
| 138 | MK_COUNT = 1, |
| 139 | MK_CONDITIONAL = 2, |
| 140 | MK_THREAD_ONLY = 3, |
| 141 | MK_CLASS_ONLY = 4, |
| 142 | MK_CLASS_MATCH = 5, |
| 143 | MK_CLASS_EXCLUDE = 6, |
| 144 | MK_LOCATION_ONLY = 7, |
| 145 | MK_EXCEPTION_ONLY = 8, |
| 146 | MK_FIELD_ONLY = 9, |
| 147 | MK_STEP = 10, |
| 148 | MK_INSTANCE_ONLY = 11, |
Brian Carlstrom | 7934ac2 | 2013-07-26 10:54:15 -0700 | [diff] [blame] | 149 | MK_SOURCE_NAME_MATCH = 12, // Since Java 6. |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 150 | }; |
| 151 | std::ostream& operator<<(std::ostream& os, const JdwpModKind& value); |
| 152 | |
| 153 | /* |
| 154 | * InvokeOptions constants (bit flags). |
| 155 | */ |
| 156 | enum JdwpInvokeOptions { |
| 157 | INVOKE_SINGLE_THREADED = 0x01, |
| 158 | INVOKE_NONVIRTUAL = 0x02, |
| 159 | }; |
| 160 | std::ostream& operator<<(std::ostream& os, const JdwpInvokeOptions& value); |
| 161 | |
| 162 | /* |
| 163 | * StepDepth constants. |
| 164 | */ |
| 165 | enum JdwpStepDepth { |
Elliott Hughes | 460384f | 2012-04-04 16:53:10 -0700 | [diff] [blame] | 166 | SD_INTO = 0, // Step into method calls. |
| 167 | SD_OVER = 1, // Step over method calls. |
| 168 | SD_OUT = 2, // Step out of current method. |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 169 | }; |
| 170 | std::ostream& operator<<(std::ostream& os, const JdwpStepDepth& value); |
| 171 | |
| 172 | /* |
| 173 | * StepSize constants. |
| 174 | */ |
| 175 | enum JdwpStepSize { |
Elliott Hughes | 460384f | 2012-04-04 16:53:10 -0700 | [diff] [blame] | 176 | SS_MIN = 0, // Step by minimum (for example, one bytecode). |
| 177 | SS_LINE = 1, // If possible, step to next line. |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 178 | }; |
| 179 | std::ostream& operator<<(std::ostream& os, const JdwpStepSize& value); |
| 180 | |
| 181 | /* |
| 182 | * SuspendPolicy constants. |
| 183 | */ |
| 184 | enum JdwpSuspendPolicy { |
Elliott Hughes | 460384f | 2012-04-04 16:53:10 -0700 | [diff] [blame] | 185 | SP_NONE = 0, // Suspend no threads. |
| 186 | SP_EVENT_THREAD = 1, // Suspend event thread. |
| 187 | SP_ALL = 2, // Suspend all threads. |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 188 | }; |
| 189 | std::ostream& operator<<(std::ostream& os, const JdwpSuspendPolicy& value); |
| 190 | |
| 191 | /* |
| 192 | * SuspendStatus constants. |
| 193 | */ |
| 194 | enum JdwpSuspendStatus { |
| 195 | SUSPEND_STATUS_NOT_SUSPENDED = 0, |
| 196 | SUSPEND_STATUS_SUSPENDED = 1, |
| 197 | }; |
| 198 | std::ostream& operator<<(std::ostream& os, const JdwpSuspendStatus& value); |
| 199 | |
| 200 | /* |
| 201 | * ThreadStatus constants. |
| 202 | */ |
| 203 | enum JdwpThreadStatus { |
| 204 | TS_ZOMBIE = 0, |
| 205 | TS_RUNNING = 1, // RUNNING |
| 206 | TS_SLEEPING = 2, // (in Thread.sleep()) |
| 207 | TS_MONITOR = 3, // WAITING (monitor wait) |
| 208 | TS_WAIT = 4, // (in Object.wait()) |
| 209 | }; |
| 210 | std::ostream& operator<<(std::ostream& os, const JdwpThreadStatus& value); |
| 211 | |
| 212 | /* |
| 213 | * TypeTag constants. |
| 214 | */ |
| 215 | enum JdwpTypeTag { |
| 216 | TT_CLASS = 1, |
| 217 | TT_INTERFACE = 2, |
| 218 | TT_ARRAY = 3, |
| 219 | }; |
| 220 | std::ostream& operator<<(std::ostream& os, const JdwpTypeTag& value); |
| 221 | |
| 222 | /* |
| 223 | * Tag constants. |
| 224 | */ |
Elliott Hughes | dbb4079 | 2011-11-18 17:05:22 -0800 | [diff] [blame] | 225 | enum JdwpTag { |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 226 | JT_ARRAY = '[', |
| 227 | JT_BYTE = 'B', |
| 228 | JT_CHAR = 'C', |
| 229 | JT_OBJECT = 'L', |
| 230 | JT_FLOAT = 'F', |
| 231 | JT_DOUBLE = 'D', |
| 232 | JT_INT = 'I', |
| 233 | JT_LONG = 'J', |
| 234 | JT_SHORT = 'S', |
| 235 | JT_VOID = 'V', |
| 236 | JT_BOOLEAN = 'Z', |
| 237 | JT_STRING = 's', |
| 238 | JT_THREAD = 't', |
| 239 | JT_THREAD_GROUP = 'g', |
| 240 | JT_CLASS_LOADER = 'l', |
| 241 | JT_CLASS_OBJECT = 'c', |
| 242 | }; |
Elliott Hughes | dbb4079 | 2011-11-18 17:05:22 -0800 | [diff] [blame] | 243 | std::ostream& operator<<(std::ostream& os, const JdwpTag& value); |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 244 | |
| 245 | } // namespace JDWP |
| 246 | |
| 247 | } // namespace art |
| 248 | |
Brian Carlstrom | fc0e321 | 2013-07-17 14:40:12 -0700 | [diff] [blame] | 249 | #endif // ART_RUNTIME_JDWP_JDWP_CONSTANTS_H_ |