249 lines
8.5 KiB
C++
249 lines
8.5 KiB
C++
/*
|
|
* 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_
|