void GrResourceCache::validate() const { fList.validate(); fExclusiveList.validate(); GrAssert(both_zero_or_nonzero(fEntryCount, fEntryBytes)); GrAssert(both_zero_or_nonzero(fClientDetachedCount, fClientDetachedBytes)); GrAssert(fClientDetachedBytes <= fEntryBytes); GrAssert(fClientDetachedCount <= fEntryCount); GrAssert((fEntryCount - fClientDetachedCount) == fCache.count()); fCache.validate(); EntryList::Iter iter; // check that the exclusively held entries are okay const GrResourceEntry* entry = iter.init(const_cast<EntryList&>(fExclusiveList), EntryList::Iter::kHead_IterStart); for ( ; NULL != entry; entry = iter.next()) { entry->validate(); } // check that the shareable entries are okay entry = iter.init(const_cast<EntryList&>(fList), EntryList::Iter::kHead_IterStart); int count = 0; for ( ; NULL != entry; entry = iter.next()) { entry->validate(); GrAssert(fCache.find(entry->key())); count += 1; } GrAssert(count == fEntryCount - fClientDetachedCount); size_t bytes = countBytes(fList); GrAssert(bytes == fEntryBytes - fClientDetachedBytes); bytes = countBytes(fExclusiveList); GrAssert(bytes == fClientDetachedBytes); GrAssert(fList.countEntries() == fEntryCount - fClientDetachedCount); GrAssert(fExclusiveList.countEntries() == fClientDetachedCount); }
void GrResourceCache::validate() const { fList.validate(); SkASSERT(both_zero_or_nonzero(fEntryCount, fEntryBytes)); EntryList::Iter iter; // check that the shareable entries are okay const GrResourceCacheEntry* entry = iter.init(const_cast<EntryList&>(fList), EntryList::Iter::kHead_IterStart); int count = 0; for ( ; entry; entry = iter.next()) { entry->validate(); count += 1; } SkASSERT(count == fEntryCount); size_t bytes = this->countBytes(fList); SkASSERT(bytes == fEntryBytes); SkASSERT(fList.countEntries() == fEntryCount); }