Add IndirectReferenceTable and initialize all the instances.

We're not _using_ any of the tables yet (except in tests), but all the
reference tables are now in place.

Change-Id: Ifd3fc114254460b4a1302520f2a4653319b113e5
diff --git a/src/reference_table.h b/src/reference_table.h
index 1181304..2e4d954 100644
--- a/src/reference_table.h
+++ b/src/reference_table.h
@@ -26,11 +26,8 @@
 
 class Object;
 
-static const Object* const kInvalidIndirectRefObject = reinterpret_cast<Object*>(0xdead4321);
-static const Object* const kClearedJniWeakGlobal = reinterpret_cast<Object*>(0xdead1234);
-
-// Maintain a table of references.  Used for internal local references,
-// JNI monitor references, and JNI pinned array references.
+// Maintain a table of references.  Used for JNI monitor references and
+// JNI pinned array references.
 //
 // None of the functions are synchronized.
 class ReferenceTable {
@@ -46,6 +43,9 @@
   void Dump() const;
 
  private:
+  static void Dump(const std::vector<Object*>& entries);
+  friend class IndirectReferenceTable; // For Dump.
+
   std::string name_;
   std::vector<Object*> entries_;
   size_t max_size_;