Lines Matching refs:rec
69 static const SkResourceCache::Key& GetKey(const SkResourceCache::Rec* rec) {
70 return rec->getKey();
107 Rec* rec = fHead;
108 while (rec) {
109 Rec* next = rec->fNext;
110 delete rec;
111 rec = next;
122 Rec* rec = *found;
123 if (visitor(*rec, context)) {
124 this->moveToHead(rec); // for our LRU
127 this->remove(rec); // stale
146 void SkResourceCache::add(Rec* rec, void* payload) {
149 SkASSERT(rec);
151 if (Rec** preexisting = fHash->find(rec->getKey())) {
159 delete rec;
164 this->addToHead(rec);
165 fHash->set(rec);
166 rec->postAddInstall(payload);
170 make_size_str(rec->bytesUsed(), &bytesStr);
173 bytesStr.c_str(), rec, rec->getHash(), totalStr.c_str(), fCount);
176 // since the new rec may push us over-budget, we perform a purge check now
180 void SkResourceCache::remove(Rec* rec) {
181 SkASSERT(rec->canBePurged());
182 size_t used = rec->bytesUsed();
185 this->release(rec);
186 fHash->remove(rec->getKey());
198 bytesStr.c_str(), rec, rec->getHash(), totalStr.c_str(), fCount);
201 delete rec;
216 Rec* rec = fTail;
217 while (rec) {
222 Rec* prev = rec->fPrev;
223 if (rec->canBePurged()) {
224 this->remove(rec);
226 rec = prev;
248 Rec* rec = fTail;
249 while (rec) {
250 Rec* prev = rec->fPrev;
251 if (rec->getKey().getSharedID() == sharedID) {
254 if (rec->canBePurged()) {
255 this->remove(rec);
261 rec = prev;
277 Rec* rec = fTail;
278 while (rec) {
279 visitor(*rec, context);
280 rec = rec->fPrev;
308 void SkResourceCache::release(Rec* rec) {
309 Rec* prev = rec->fPrev;
310 Rec* next = rec->fNext;
313 SkASSERT(fHead == rec);
325 rec->fNext = rec->fPrev = nullptr;
328 void SkResourceCache::moveToHead(Rec* rec) {
329 if (fHead == rec) {
338 this->release(rec);
340 fHead->fPrev = rec;
341 rec->fNext = fHead;
342 fHead = rec;
347 void SkResourceCache::addToHead(Rec* rec) {
350 rec->fPrev = nullptr;
351 rec->fNext = fHead;
353 fHead->fPrev = rec;
355 fHead = rec;
357 fTail = rec;
359 fTotalBytesUsed += rec->bytesUsed();
389 const Rec* rec = fHead;
390 while (rec) {
392 used += rec->bytesUsed();
394 rec = rec->fNext;
398 rec = fTail;
399 while (rec) {
402 SkASSERT(used >= rec->bytesUsed());
403 used -= rec->bytesUsed();
404 rec = rec->fPrev;
535 void SkResourceCache::Add(Rec* rec, void* payload) {
537 get_cache()->add(rec, payload);
583 static void dump_visitor(const SkResourceCache::Rec& rec, void*) {
585 rec.getCategory(), rec.bytesUsed(), rec.diagnostic_only_getDiscardable());
592 static void sk_trace_dump_visitor(const SkResourceCache::Rec& rec, void* context) {
594 SkString dumpName = SkStringPrintf("skia/sk_resource_cache/%s_%p", rec.getCategory(), &rec);
595 SkDiscardableMemory* discardable = rec.diagnostic_only_getDiscardable();
601 dump->dumpNumericValue(dumpName.c_str(), "discardable_size", "bytes", rec.bytesUsed());
603 dump->dumpNumericValue(dumpName.c_str(), "size", "bytes", rec.bytesUsed());