+ size_t tsize[2];
+ uint32_t count = site->count;
+ tsize[0] = site->size[0];
+ tsize[1] = site->size[1];
+
+ if (intag || inzsize)
+ {
+ uintptr_t addr;
+ vm_size_t size, zoneSize;
+ vm_tag_t tag;
+
+ if (kIOTrackingQueueTypeAlloc & queue->type)
+ {
+ addresses = false;
+ count = 0;
+ tsize[0] = tsize[1] = 0;
+ queue_iterate(&site->instances, instance, IOTracking *, link)
+ {
+ if (instance == site->addresses) addresses = true;
+
+ if (addresses) addr = ~((IOTrackingAddress *)instance)->address;
+ else addr = (uintptr_t) (instance + 1);
+
+ kr = vm_kern_allocation_info(addr, &size, &tag, &zoneSize);
+ if (KERN_SUCCESS != kr) continue;
+
+ if ((VM_KERN_MEMORY_NONE != intag) && (intag != tag)) continue;
+ if (inzsize && (inzsize != zoneSize)) continue;
+
+ count++;
+ tsize[0] += size;
+ }
+ }
+ else
+ {
+ if (!intag || inzsize || (intag != site->tag)) continue;
+ }
+ }
+
+ if (!count) continue;
+ if (size && ((tsize[0] + tsize[1]) < size)) continue;