Lines Matching refs:slab
106 Slab *slab = fPartialSlabs.Head();
109 slab, slab->count);
111 ObjectLink *link = SListPop(slab->free);
112 slab->count--;
113 if (slab->count == 0) {
114 // move the partial slab to the full list
115 fPartialSlabs.Remove(slab);
116 fFullSlabs.Add(slab);
126 Slab *slab = object.first;
129 // We return true if the slab is completely unused.
131 SListPush(slab->free, link);
132 slab->count++;
133 if (slab->count == slab->size) {
134 fPartialSlabs.Remove(slab);
136 } else if (slab->count == 1) {
137 fFullSlabs.Remove(slab);
138 fPartialSlabs.Add(slab);
146 BaseCache::ConstructSlab(Slab *slab, void *pages, size_t byteCount,
149 printf("BaseCache::ConstructSlab(%p, %p, %lu, %p, %p)\n", slab, pages,
152 slab->pages = pages;
153 slab->count = slab->size = byteCount / fObjectSize;
154 slab->free = NULL;
156 size_t spareBytes = byteCount - (slab->size * fObjectSize);
165 slab->size, spareBytes, cycle);
169 for (size_t i = 0; i < slab->size; i++) {
172 SListPush(slab->free, getLink(parent, data));
176 return slab;
181 BaseCache::DestructSlab(Slab *slab)
186 uint8_t *data = (uint8_t *)slab->pages;
188 for (size_t i = 0; i < slab->size; i++) {
295 // we return the object directly to the slab.