Lines Matching +defs:admin +defs:address

311                 void *address = displace(_large_start, start << allocate_quantum_large_log2);
312 commit_memory(address, size);
313 return address;
335 void Zone::arena_deallocate(void *address, size_t size) {
338 usword_t start = ((char *)address - (char *)_large_start) >> allocate_quantum_large_log2;
341 uncommit_memory(address, size);
342 //if (address < _first_free) _first_free = address;
345 // on 32-bit, goes directly to system (the entire address space is our arena)
350 void Zone::arena_deallocate(void *address, size_t size) {
351 deallocate_memory(address, size);
386 if (_region_list == NULL || region->address() < _region_list->address()) {
393 while (r->next() != NULL && r->next()->address() < region->address()) {
412 void *address;
422 address = large->address();
425 _in_large.set_bit(Large::quantum_index(address));
443 bzero(address, size);
450 Range large_range(address, size);
456 return address;
528 // find (or create) a region that can (and does) add a subzone to this admin
530 bool Zone::add_subzone(Admin *admin) {
533 return (r && r->add_subzone(admin));
573 Admin &admin = _partition.admin(allocated_size, layout, refcount_is_one);
586 block = admin.thread_cache_allocate(thread, allocated_size, layout, refcount_is_one, is_local);
587 } while (!block && add_subzone(&admin));
590 block = admin.find_allocation(thread, allocated_size, layout, refcount_is_one, is_local);
591 } while (!block && add_subzone(&admin));
640 Admin &admin = _partition.admin(allocated_size, layout, refcount_is_one);
641 count = admin.batch_allocate(thread, allocated_size, layout, refcount_is_one, clear, results, num_requested);
676 void *address = block.address();
681 erase_associations(address);
683 SpinLock adminLock(subzone->admin()->lock());
688 erase_weak(address);
689 // enlivening_enabled only changes while admin lock held
691 // Other scanners though - gdb/dump are vulnerable if they don't also hold the admin locks.
692 // They can't properly iterate via the admin if we're coalescing.
695 subzone->admin()->deallocate_no_lock(subzone, q, address); // ignore object -finalize work
708 void *address = block.address();
712 erase_weak(address);
718 dispatch_async(_collection_queue, ^{ zone->deallocate_large(large, address); });
727 Large *Zone::block_start_large(void *address) {
729 if (_coverage.in_range(address)) {
730 usword_t q = Large::quantum_index(address);
742 if (!large->range().in_range(address)) return NULL;
754 // Return the base block address of an arbitrary address.
757 void *Zone::block_start(void *address) {
758 if (in_subzone_memory(address)) {
759 Subzone *subzone = Subzone::subzone(address);
762 return subzone->block_start(address, q);
764 Large *large = block_start_large(address);
765 return large ? large->address() : NULL;
801 SpinLock lock(subzone->admin()->lock());
951 // Rebuilds all the admin free lists from subzone side data. Requires that the caller hold the SubzonePartition locked.
955 _partition.for_each(^(Admin &admin){
956 admin.reset_free_list();
966 Admin *admin = subzone->admin();
969 void *address = subzone->quantum_address(q);
970 FreeListNode *node = new(address) FreeListNode();
971 admin->append_node(node);
1004 // Set the write barrier byte corresponding to the specified address.
1006 bool Zone::set_write_barrier(void *address) {
1007 if (in_subzone_memory(address)) {
1009 Subzone *subzone = Subzone::subzone(address);
1012 subzone->write_barrier().mark_card(address);
1015 else if (Large *large = block_start_large(address)) {
1017 if (large->is_scanned()) large->write_barrier().mark_card(address);
1387 _list.add(large->address());
1513 subzone->admin()->deallocate_no_lock(subzone, q, block);
1918 Subzone *_last_subzone; // previous admin visited
1929 malloc_printf("Region [%p..%p]\n", _last_region->address(), _last_region->end());
1972 name = control.name_for_address((auto_zone_t *)this, (vm_address_t)block.address(), 0);
1979 tag, block.address(), (unsigned)block.size(),