Improve CHECK_<op> logging.
This patch lets us show the lhs and rhs when a relational check fails. (I show
both, even though that looks silly in cases like CHECK_EQ(rc, 0) where we'll
say "rc=-1, 0=0", because it's helpful in cases like CHECK_LT(i, size()) where
we want "i=4, size=2".)
I had to add a few operator<<s for enums, and fix a bunch of signed/unsigned
mismatches, and put the StringPiece operator<< in the right namespace.
Change-Id: I390f38bd97b3f50e12182f36ff027ca067c48d69
diff --git a/src/object.cc b/src/object.cc
index d897c52..f5792fc 100644
--- a/src/object.cc
+++ b/src/object.cc
@@ -117,5 +117,24 @@
return NULL; // TODO
}
+static const char* kClassStatusNames[] = {
+ "Error",
+ "NotReady",
+ "Idx",
+ "Loaded",
+ "Resolved",
+ "Verifying",
+ "Verified",
+ "Initializing",
+ "Initialized"
+};
+std::ostream& operator<<(std::ostream& os, const Class::Status& rhs) {
+ if (rhs >= Class::kStatusError && rhs <= Class::kStatusInitialized) {
+ os << kClassStatusNames[rhs - 1];
+ } else {
+ os << "Class::Status[" << int(rhs) << "]";
+ }
+ return os;
+}
} // namespace art