- count = *countp;
- for (numSites = 0, idx = 0; idx < count; idx++)
- {
- element = instances[idx];
-
- if (kInstanceFlagReferenced & element) continue;
- element = INSTANCE_PUT(element) & ~kInstanceFlags;
-
- site = 0;
- hashidx = calculate_hashidx_for_element(element, btlog);
- hashelem = btlog->elem_linkage_un.elem_recindex_hashtbl[hashidx];
- while (hashelem != NULL)
- {
- if (~hashelem->elem == element) break;
- hashelem = TAILQ_NEXT(hashelem, element_hash_link);
- }
- if (hashelem)
- {
- recindex = hashelem->recindex;
- site = (uintptr_t) lookup_btrecord(btlog, recindex);
- }
- if (site) element = (site | kInstanceFlagReferenced);
- instances[numSites] = INSTANCE_PUT(element);
- numSites++;
- }
-
- for (idx = 0; idx < numSites; idx++)
- {
- site = instances[idx];
- if (!site) continue;
- if (!(kInstanceFlagReferenced & site)) continue;
- for (siteCount = 1, dups = (idx + 1); dups < numSites; dups++)
- {
- if (instances[dups] == site)
- {
- siteCount++;
- instances[dups] = 0;
- }
- }
- record = (typeof(record)) (INSTANCE_PUT(site) & ~kInstanceFlags);
- (*proc)(refCon, siteCount, zoneSize, (uintptr_t *) &record->bt[0], (uint32_t) btlog->btrecord_btdepth);
- }
-
- *countp = numSites;
+ count = *countp;
+ for (numSites = 0, idx = 0; idx < count; idx++) {
+ element = instances[idx];
+
+ if (kInstanceFlagReferenced & element) {
+ continue;
+ }
+ element = INSTANCE_PUT(element) & ~kInstanceFlags;
+
+ site = 0;
+ hashidx = calculate_hashidx_for_element(element, btlog);
+ hashelem = btlog->elem_linkage_un.elem_recindex_hashtbl[hashidx];
+ while (hashelem != NULL) {
+ if (~hashelem->elem == element) {
+ break;
+ }
+ hashelem = TAILQ_NEXT(hashelem, element_hash_link);
+ }
+ if (hashelem) {
+ recindex = hashelem->recindex;
+ site = (uintptr_t) lookup_btrecord(btlog, recindex);
+ }
+ if (site) {
+ element = (site | kInstanceFlagReferenced);
+ }
+ instances[numSites] = INSTANCE_PUT(element);
+ numSites++;
+ }
+
+ for (idx = 0; idx < numSites; idx++) {
+ site = instances[idx];
+ if (!site) {
+ continue;
+ }
+ if (!(kInstanceFlagReferenced & site)) {
+ continue;
+ }
+ for (siteCount = 1, dups = (idx + 1); dups < numSites; dups++) {
+ if (instances[dups] == site) {
+ siteCount++;
+ instances[dups] = 0;
+ }
+ }
+ record = (typeof(record))(INSTANCE_PUT(site) & ~kInstanceFlags);
+ (*proc)(refCon, siteCount, zoneSize, (uintptr_t *) &record->bt[0], (uint32_t) btlog->btrecord_btdepth);
+ }
+
+ *countp = numSites;