void sgen_find_section_pin_queue_start_end (GCMemSection *section) { SGEN_LOG (6, "Pinning from section %p (%p-%p)", section, section->data, section->end_data); section->pin_queue_start = sgen_find_optimized_pin_queue_area (section->data, section->end_data, §ion->pin_queue_num_entries); SGEN_LOG (6, "Found %d pinning addresses in section %p", section->pin_queue_num_entries, section); }
void sgen_find_section_pin_queue_start_end (GCMemSection *section) { SGEN_LOG (6, "Pinning from section %p (%p-%p)", section, section->data, section->end_data); sgen_find_optimized_pin_queue_area (section->data, section->end_data, §ion->pin_queue_first_entry, §ion->pin_queue_last_entry); SGEN_LOG (6, "Found %zd pinning addresses in section %p", section->pin_queue_last_entry - section->pin_queue_first_entry, section); }
void sgen_pinned_scan_pinned_objects (SgenPinnedAllocator *alc, IterateObjectCallbackFunc callback, void *callback_data) { SgenPinnedChunk *chunk; /* look for pinned addresses for pinned-alloc objects */ sgen_debug_printf (6, "Pinning from pinned-alloc objects\n"); for (chunk = alc->chunk_list; chunk; chunk = chunk->block.next) { int num_pinned; void **pinned = sgen_find_optimized_pin_queue_area (chunk->start_data, (char*)chunk + chunk->num_pages * FREELIST_PAGESIZE, &num_pinned); if (num_pinned) mark_pinned_from_addresses (chunk, pinned, pinned + num_pinned, callback, callback_data); } }