• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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   */
19  #ifndef ART_RUNTIME_JDWP_JDWP_CONSTANTS_H_
20  #define ART_RUNTIME_JDWP_JDWP_CONSTANTS_H_
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,
38    ERR_THREAD_NOT_ALIVE                            = 15,
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,
114    EK_THREAD_DEATH         = 7,  // Formerly known as THREAD_END.
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,
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,
128    EK_VM_START             = 90,  // Formerly known as VM_INIT.
129    EK_VM_DEATH             = 99,
130    EK_VM_DISCONNECTED      = 100,  // "Never sent across JDWP".
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,
149    MK_SOURCE_NAME_MATCH    = 12,  // Since Java 6.
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 {
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.
169  };
170  std::ostream& operator<<(std::ostream& os, const JdwpStepDepth& value);
171  
172  /*
173   * StepSize constants.
174   */
175  enum JdwpStepSize {
176    SS_MIN                  = 0,    // Step by minimum (for example, one bytecode).
177    SS_LINE                 = 1,    // If possible, step to next line.
178  };
179  std::ostream& operator<<(std::ostream& os, const JdwpStepSize& value);
180  
181  /*
182   * SuspendPolicy constants.
183   */
184  enum JdwpSuspendPolicy {
185    SP_NONE                 = 0,    // Suspend no threads.
186    SP_EVENT_THREAD         = 1,    // Suspend event thread.
187    SP_ALL                  = 2,    // Suspend all threads.
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   */
225  enum JdwpTag {
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  };
243  std::ostream& operator<<(std::ostream& os, const JdwpTag& value);
244  
245  }  // namespace JDWP
246  
247  }  // namespace art
248  
249  #endif  // ART_RUNTIME_JDWP_JDWP_CONSTANTS_H_
250