Start implementing jdb "locals".
This lets us show the names and types of the locals, but all the values
will show up as 0/null. We're going to have to walk the whole stack and
take callee-save frames into account to do that right.
Change-Id: Ic6e115513b6e65ae7ed4b7274e70bc514e83190a
diff --git a/src/jdwp/jdwp_main.cc b/src/jdwp/jdwp_main.cc
index 3bc0d41..28ea303 100644
--- a/src/jdwp/jdwp_main.cc
+++ b/src/jdwp/jdwp_main.cc
@@ -457,6 +457,30 @@
return os;
}
+std::ostream& operator<<(std::ostream& os, const JdwpTag& value) {
+ switch (value) {
+ case JT_ARRAY: os << "JT_ARRAY"; break;
+ case JT_BYTE: os << "JT_BYTE"; break;
+ case JT_CHAR: os << "JT_CHAR"; break;
+ case JT_OBJECT: os << "JT_OBJECT"; break;
+ case JT_FLOAT: os << "JT_FLOAT"; break;
+ case JT_DOUBLE: os << "JT_DOUBLE"; break;
+ case JT_INT: os << "JT_INT"; break;
+ case JT_LONG: os << "JT_LONG"; break;
+ case JT_SHORT: os << "JT_SHORT"; break;
+ case JT_VOID: os << "JT_VOID"; break;
+ case JT_BOOLEAN: os << "JT_BOOLEAN"; break;
+ case JT_STRING: os << "JT_STRING"; break;
+ case JT_THREAD: os << "JT_THREAD"; break;
+ case JT_THREAD_GROUP: os << "JT_THREAD_GROUP"; break;
+ case JT_CLASS_LOADER: os << "JT_CLASS_LOADER"; break;
+ case JT_CLASS_OBJECT: os << "JT_CLASS_OBJECT"; break;
+ default:
+ os << "JdwpTag[" << static_cast<int32_t>(value) << "]";
+ }
+ return os;
+}
+
} // namespace JDWP
} // namespace art