Fix segv in indirect reference table dump.
ReferenceTable::Dump is common code but can't handle NULLs. Process
IndirectReferenceTable's use so that it doesn't pass NULLs for removed
slots.
Improve unit tests.
Change-Id: Ia41375f8f2ecc907ceda8c39d146ce6ef607fb08
diff --git a/src/indirect_reference_table.cc b/src/indirect_reference_table.cc
index 958531d..9bb6edc 100644
--- a/src/indirect_reference_table.cc
+++ b/src/indirect_reference_table.cc
@@ -318,6 +318,12 @@
void IndirectReferenceTable::Dump(std::ostream& os) const {
os << kind_ << " table dump:\n";
std::vector<const Object*> entries(table_, table_ + Capacity());
+ // Remove NULLs.
+ for (int i = entries.size() - 1; i >= 0; --i) {
+ if (entries[i] == NULL) {
+ entries.erase(entries.begin() + i);
+ }
+ }
ReferenceTable::Dump(os, entries);
}