Lines Matching refs:block
229 // BlockRef FIXME: block visitors should hand out BlockRefs
263 void *block = i->first;
267 if (!visitor(zone, block, pair.first, pair.second)) return false;
290 // Applies an operation to a block, calling the appropriate operator() according
291 // to the kind of block small/medium vs. large.
294 template <class BlockDo> void blockDo(Zone *zone, void *block, BlockDo &op) {
295 if (zone->in_subzone_memory(block)) {
296 Subzone *subzone = Subzone::subzone(block);
298 if (subzone->block_is_start(block, &q)) op(subzone, q);
299 } else if (zone->block_is_start_large(block)) {
300 op(Large::large(block));
304 inline void blockDo(Zone *zone, void *block, void (^subzoneDo) (Subzone *subzone, usword_t q), void (^largeDo) (Large *large), void (^elseDo) (void *block) = NULL) {
305 if (zone->in_subzone_memory(block)) {
306 Subzone *subzone = Subzone::subzone(block);
308 if (subzone->block_is_start(block, &q)) subzoneDo(subzone, q);
309 } else if (zone->block_is_start_large(block)) {
310 largeDo(Large::large(block));
312 elseDo(block);
319 // Applies either subzoneDo, or largeDo to the block address, depending on what kind of block it is. Takes no locks.