Ejemplo n.º 1
0
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, &section->pin_queue_num_entries);
	SGEN_LOG (6, "Found %d pinning addresses in section %p", section->pin_queue_num_entries, section);
}
Ejemplo n.º 2
0
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,
			&section->pin_queue_first_entry, &section->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);
}
Ejemplo n.º 3
0
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);
    }
}