Home | History | Annotate | Download | only in jdwp
      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