/macosx-10.9.5/libauto-185.5/ |
H A D | ZoneCompaction.cpp | 129 void push(Subzone *subzone, usword_t q) { argument 130 _small_stack.push_back(subzone->pack(q)); 137 static bool mark(Subzone *subzone, usword_t q) { return subzone->test_and_set_mark(q); } argument 140 static bool is_marked(Subzone *subzone, usword_t q) { return subzone->is_marked(q); } argument 150 Subzone *subzone = Subzone::unpack(back, q); local 151 scanner.scan(subzone, q); 169 void push(Subzone *subzone, usword_t q) {} argument 172 static bool mark(Subzone *subzone, usword_ argument 174 is_marked(Subzone *subzone, usword_t q) argument 183 typedef void (^mark_pinned_t) (void **slot, Subzone *subzone, usword_t q, ReferenceKind kind); member in namespace:Auto 205 mark_pinned(void **slot, Subzone *subzone, usword_t q, ReferenceKind kind) argument 226 visit(const ReferenceInfo &info, void **slot, Subzone *subzone, usword_t q) argument 312 Subzone *subzone = Subzone::subzone(callback); local 427 visit(Zone *zone, Subzone *subzone, usword_t q) argument 646 is_page_pinned(Subzone *subzone, void *block_page) argument 668 forward_block(Zone *zone, Subzone *subzone, usword_t q, void *block) argument 680 operator ()(Zone *zone, Subzone *subzone, usword_t q) argument 713 Subzone *subzone = Subzone::subzone(block); local 737 Subzone *subzone = Subzone::subzone(address); local 769 visit(const ReferenceInfo &info, void **slot, Subzone *subzone, usword_t q) argument 782 operator ()(Zone *zone, Subzone *subzone, usword_t q) argument 841 operator ()(Zone *zone, Subzone *subzone, usword_t q) argument 867 operator ()(Zone *zone, Subzone *subzone, usword_t q) argument 897 forward_block(Subzone *subzone, usword_t q, void *block) argument 939 move_block(Subzone *subzone, usword_t q, void *block) argument [all...] |
H A D | BlockRef.h | 38 SubzoneBlockRef(Subzone *subzone, usword_t q) : _subzone(subzone), _q(q) {} argument 39 SubzoneBlockRef(void *ptr) : _subzone(Subzone::subzone(ptr)), _q(_subzone->quantum_index_unchecked(ptr)) {} 41 inline Subzone * subzone() const { return _subzone; } function in class:Auto::SubzoneBlockRef 44 inline Zone * zone() const { return subzone()->admin()->zone(); } 45 inline usword_t size() const { return subzone()->size(q()); } 46 inline void * address() const { return subzone()->quantum_address(q()); } 47 inline bool has_refcount() const { return subzone()->has_refcount(q()); } 48 inline bool is_garbage() const { return subzone()->is_garbage(q()); } 51 inline auto_memory_type_t layout() const { return subzone() [all...] |
H A D | Admin.cpp | 115 for (Subzone *subzone = _purgeable_subzones; subzone != NULL; subzone = subzone->nextSubzone()) { 116 if (!subzone->is_purged()) { 117 visitor(subzone); 146 void operator() (Subzone *subzone) { argument 147 Range r(subzone->purgeable_range()); 189 void operator() (Subzone *subzone) { argument 190 Range r(subzone 242 Subzone *subzone = Subzone::subzone((void *)node); local 297 Subzone *subzone = Subzone::subzone((void *)node); local 387 Subzone *subzone = Subzone::subzone(address); local 405 mark_cached(Subzone *subzone, usword_t q, const usword_t n) argument 411 Subzone *subzone = Subzone::subzone(address); local 424 Subzone *subzone = _purgeable_subzones, *prev_subzone = NULL; local 460 Subzone *subzone = _active_subzone; local 521 Subzone *subzone = Subzone::subzone(address); local 612 batch_allocate_from_subzone_no_lock(Subzone *subzone, size_t size, const bool clear, void **results, unsigned num_requested) argument 703 Subzone *subzone = Subzone::subzone(node); local 838 allocate_different_block_no_lock(Subzone *subzone, usword_t q, void *block_address) argument 865 allocate_destination_block_no_lock(Subzone *subzone, usword_t q, void *block_address) argument 875 deallocate(Subzone *subzone, usword_t q, void *address) argument 885 deallocate_no_lock(Subzone *subzone, usword_t q, void *address) argument [all...] |
H A D | ThreadLocalCollector.cpp | 60 Subzone *subzone = Subzone::subzone(block); local 61 usword_t q = subzone->quantum_index_unchecked(block); 62 if (subzone->block_is_start(q) && subzone->is_thread_local(q)) { 165 inline void ThreadLocalCollector::scan_local_block(Subzone *subzone, usword_t q, void *block) { argument 166 Range range(block, subzone->size(q)); 167 const unsigned char *map = (subzone->layout(q) & AUTO_OBJECT) ? _zone->layout_map_for_block(block) : NULL; 183 Subzone *subzone = Subzone::subzone(bloc local 212 Subzone *subzone = Subzone::subzone(block); local 268 Subzone *subzone = Subzone::subzone(block); local 279 Subzone *subzone = Subzone::subzone(block); local 310 Subzone *subzone = Subzone::subzone(block); local 356 Subzone *subzone = Subzone::subzone(block); local 441 Subzone *subzone = Subzone::subzone(block); local 537 Subzone *subzone = Subzone::subzone(startingBlock); local [all...] |
H A D | BlockIterator.h | 51 while (Subzone *subzone = iterator.next()) { 52 // get the number of quantum in the subzone 53 usword_t n = subzone->allocation_limit(); 55 for (usword_t q = 0; q < n; q = subzone->next_quantum(q)) { 56 if (!subzone->is_free(q)) { 57 visitor.visit(zone, subzone, q); 79 // const boolean_t visit_subzone_quanta() const - return true if the visitor wants to iterate over subzone quanta, or false if it just wants to get the subzone 89 SubzoneRangeIterator _iterator; // subzone iterator for _current_region 105 // Visit the subzone 296 Subzone *subzone = Subzone::subzone(block); local 304 blockDo(Zone *zone, void *block, void (^subzoneDo) (Subzone *subzone, usword_t q), void (^largeDo) (Large *large), void (^elseDo) (void *block) = NULL) argument 306 Subzone *subzone = Subzone::subzone(block); local 323 blockStartNoLockDo(Zone *zone, void *address, void (^subzoneDo) (Subzone *subzone, usword_t q), void (^largeDo) (Large *large)) argument 325 Subzone *subzone = Subzone::subzone(address); local [all...] |
H A D | ReferenceIterator.h | 127 // void visit(const ReferenceInfo &info, void **slot, Subzone *subzone, usword_t q); 133 // The block being referenced is either a small/medium block, represented by the subzone / quantum pair, or a Large block. 143 // void push(Subzone *subzone, usword_t q); 151 // scanner.scan(Subzone *subzone, usword_t) or scanner.scan(Large *large). 191 void push(Subzone *subzone, usword_t q) { _pending_stack.push(subzone, q); } argument 194 bool mark(Subzone *subzone, usword_t q) { return _pending_stack.mark(subzone, q); } argument 197 bool is_marked(Subzone *subzone, usword_t q) { return _pending_stack.is_marked(subzone, argument 200 should_scan(Subzone *subzone, usword_t q) argument 203 should_mark(Subzone *subzone, usword_t q) argument 219 Subzone *subzone = Subzone::subzone(pointer); local 240 Subzone *subzone = Subzone::subzone(pointer); local 267 Subzone *subzone = Subzone::subzone(pointer); local 356 scan(Subzone *subzone, usword_t q) argument 387 visit(Zone *zone, Subzone *subzone, usword_t q) argument 442 visit(Zone *zone, Subzone *subzone, usword_t q) argument 508 Subzone *subzone = Subzone::subzone(value); local 539 should_mark(Subzone *subzone, usword_t q) argument 541 should_scan(Subzone *subzone, usword_t q) argument 564 Subzone *subzone = Subzone::subzone(block); local 593 Subzone *subzone = Subzone::subzone(value); local 633 operator ()(Subzone *subzone, usword_t q) argument 676 should_mark(Subzone *subzone, usword_t q) argument 679 should_scan(Subzone *subzone, usword_t q) argument 760 should_mark(Subzone *subzone, usword_t q) argument 763 should_scan(Subzone *subzone, usword_t q) argument [all...] |
H A D | ZoneCollectionChecking.cpp | 69 Subzone *sz = Subzone::subzone(pointer); 90 Subzone *subzone = Subzone::subzone(block); local 91 usword_t q = subzone->quantum_index_unchecked(block); 93 if (subzone->collection_checking_count(q) > 0) { 94 subzone->set_collection_checking_count(q, 0); 114 inline bool visit(Zone *zone, Subzone *subzone, usword_t q) { argument 115 uint32_t count = subzone->collection_checking_count(q); 117 subzone->set_collection_checking_count(q, count+1); 180 inline bool visit(Zone *zone, Subzone *subzone, usword_ argument [all...] |
H A D | ZoneDump.cpp | 54 // visitor function for subzone 55 inline bool visit(Zone *zone, Subzone *subzone, usword_t q) { argument 57 void *block = subzone->quantum_address(q); 58 SubzoneBlockRef ref(subzone, q); 59 node_dump(block, subzone->size(q), subzone->layout(q), ref.refcount()); 146 // visitor function for subzone 147 inline bool visit(Zone *zone, Subzone *subzone, usword_t q) { argument 149 void *block = subzone->quantum_address(q); 150 SubzoneBlockRef ref(subzone, [all...] |
H A D | Region.cpp | 45 usword_t allocation_size; // size of subzone region 46 void *allocation_address = NULL; // address of subzone region 129 // size-tax is a multiple of subzone size. Easier to pass in the 'nsubzones' and confirm. 148 // Add a new subzone to one of the admin. 154 // There may have been a race to get here. Verify that the admin has no active subzone 158 Subzone *subzone = NULL; 165 // Get next subzone 166 subzone = new(subzone_address(_i_subzones++)) Subzone(this, admin, admin->quantum_log2(), _n_quantum); 169 _n_quantum += subzone->allocation_limit(); 179 admin->set_active_subzone(subzone); [all...] |
H A D | BlockRef.cpp | 34 Admin *admin = subzone()->admin(); 52 Admin *admin = subzone()->admin(); 69 subzone()->set_has_refcount(q()); 76 Admin *admin = subzone()->admin(); 91 subzone()->clear_has_refcount(q()); 102 Admin *admin = subzone()->admin();
|
H A D | Thread.cpp | 65 Subzone *subzone = Subzone::subzone(block); local 66 subzone->admin()->mark_allocated(block, i, AUTO_MEMORY_UNSCANNED, false, false); 81 Subzone *subzone = Subzone::subzone(block); local 82 subzone->make_global(subzone->quantum_index_unchecked(block)); 145 void operator ()(Subzone *subzone, usword_t q) { argument 146 if (!subzone->test_and_set_mark(q) && subzone 195 Subzone *subzone = Subzone::subzone(block); local 225 Subzone *subzone; local 345 thread_cache_add(void *block, Subzone *subzone, usword_t q) argument [all...] |
H A D | WriteBarrierIterator.h | 54 while (Subzone *subzone = iterator.next()) { 56 WriteBarrier& wb = subzone->write_barrier();
|
H A D | ZoneCollectors.cpp | 55 void push(Subzone *subzone, usword_t q) { argument 56 if (!subzone->test_and_set_pending(q, false)) { 58 Subzone::PendingCountAccumulator *accumulator = (Subzone::PendingCountAccumulator *)subzone->region()->zone()->registered_thread().pending_count_accumulator(); 60 accumulator->pended_in_subzone(subzone); 62 subzone->add_pending_count(1); 71 static bool mark(Subzone *subzone, usword_t q) { return subzone->test_and_set_mark(q); } argument 73 bool is_marked(Subzone *subzone, usword_t q) { return subzone->is_marked(q); } argument 99 worker_print("scanning subzone 150 visit(const ReferenceInfo &info, void **slot, Subzone *subzone, usword_t q) argument 173 visit(const ReferenceInfo &info, void **slot, Subzone *subzone, usword_t q) argument [all...] |
H A D | Admin.h | 57 Subzone *_active_subzone; // subzone with unused memory 58 Subzone *_purgeable_subzones; // subzones that contain allocation_count() < allocation_limit(), to be considered when active subzone is exhausted. 59 spin_lock_t _admin_lock; // protects free list, subzone data. 73 // helper function for batch allocate. performs a batch allocation from unused/purged space in a specific subzone 74 unsigned batch_allocate_from_subzone_no_lock(Subzone *subzone, usword_t requested_size, const bool clear, void **results, unsigned num_requested); 79 // try to reuse a subzone from the purgeable list. only choose a subzone with enough space to make it worth reusing. 144 // Returns the most recently added subzone 152 // Remember the most recently added subzone. This holds never used space. 242 // Allocates a block of the same size and layout of the block identified by (subzone, [all...] |
H A D | InUseEnumerator.cpp | 74 while (Subzone *subzone = iterator.next()) { 75 // map in the subzone header 76 Subzone *subzoneReader = (Subzone *)read(subzone, sizeof(Subzone)); 77 record(subzone, subzoneReader->base_data_size(), MALLOC_ADMIN_REGION_RANGE_TYPE); 80 // map in the subzone + side data when enumerating blocks. no need to map the blocks themselves. 81 subzoneReader = (Subzone *)read(subzone, subzoneReader->base_data_size());
|
H A D | Zone.cpp | 164 // initialize subzone tracking bit map 385 // keep region list sorted to aid in sorting free subzone blocks 528 // find (or create) a region that can (and does) add a subzone to this admin 677 Subzone *subzone = block.subzone(); local 683 SpinLock adminLock(subzone->admin()->lock()); 686 int layout = subzone->layout(q); 694 int64_t block_size = subzone->size(q); 695 subzone->admin()->deallocate_no_lock(subzone, 759 Subzone *subzone = Subzone::subzone(address); local 777 Subzone *subzone = Subzone::subzone(block); local 798 Subzone *subzone = Subzone::subzone(block); local 987 Subzone *subzone = Subzone::subzone(destination); local 1009 Subzone *subzone = Subzone::subzone(address); local 1364 visit(Zone *zone, Subzone *subzone, usword_t q) argument 1504 Subzone *subzone = Subzone::subzone(block); local 1925 visit(Zone *zone, Subzone *subzone, usword_t q) argument [all...] |
H A D | auto_gdb_interface.cpp | 41 void push(Subzone *subzone, usword_t q) { argument 43 assert(uintptr_t(subzone) == (uintptr_t(subzone) & ~0x1FFFF)); 44 _small_stack.push_back(uintptr_t(subzone) | q); // 1024 * 1024 / 16 == 65536 == 0x10000 51 static bool mark(Subzone *subzone, usword_t q) { return subzone->test_and_set_mark(q); } argument 54 static bool is_marked(Subzone *subzone, usword_t q) { return subzone->is_marked(q); } argument 63 Subzone *subzone = reinterpret_cast<Subzone *>(back & ~0x1FFFF); local 65 scanner.scan(subzone, 148 visit(const ReferenceInfo &info, void **slot, Subzone *subzone, usword_t q) argument 363 visit(const ReferenceInfo &info, void **slot, Subzone *subzone, usword_t q) argument 517 Subzone *subzone = Subzone::subzone(address); local 562 visit(const ReferenceInfo &info, void **ref, Subzone *subzone, usword_t q) argument 603 visit(const ReferenceInfo &info, void **ref, Subzone *subzone, usword_t q) argument [all...] |
H A D | Thread.h | 101 Subzone *subzone = Subzone::subzone(block); local 102 usword_t q = subzone->quantum_index_unchecked(block); 103 size += subzone->size(q); 226 Subzone::PendingCountAccumulator *_pending_count_accumulator; // buffers adjustments to subzone pending count 481 bool thread_cache_add(void *block, Subzone *subzone, usword_t q);
|
H A D | Zone.h | 132 Bitmap _in_subzone; // indicates which allocations are used for subzone region 142 Region *_region_list; // singly linked list of subzone regions 190 // Allocate and initialize a new subzone region. 438 // Returns a subzone index for an arbitrary pointer. Note that this is relative to absolute memory. subzone_index in 447 // Returns a number of subzone quantum for a given size. 455 // Marks the subzone as being active. 457 inline void activate_subzone(Subzone *subzone) { _in_subzone.set_bit_atomic(subzone_index(subzone)); } argument 486 // Returns true if address is in a subzone that is in use, as determined by the subzone bitma 717 Subzone *subzone = Subzone::subzone(block); local 732 Subzone *subzone = Subzone::subzone(block); local [all...] |
H A D | ThreadLocalCollector.h | 62 void scan_local_block(Subzone *subzone, usword_t q, void *block);
|
H A D | Subzone.h | 52 // A subzone is a region in vm memory managed by automatic garbage collection. The base address of the subheap is 53 // aligned to the subzone quantum size such that the containing subzone can be quickly determined from any refererence 54 // into the subzone. 71 // write barrier for subzone - must be first 73 Region *_region; // region owning this subzone (with bitmaps for these quanta) 74 Admin *_admin; // admin for this subzone (reflecting appropriate quanta size) 76 bool _is_purgeable; // true if this subzone is in admin's _purgeable_subzones list. 78 usword_t _quantum_bias; // the value added to subzone quantum numbers to get a globally 152 // the maximum number of quantum in the subzone 241 setNextSubzone(Subzone *subzone) argument 277 static inline Subzone *subzone(void *address) { return (Subzone *)((uintptr_t)address & ~mask(subzone_quantum_log2)); } function in class:Auto::Subzone 882 Subzone *subzone = (Subzone *)address(); local [all...] |
H A D | auto_zone.cpp | 850 Subzone *sz = Subzone::subzone((void*)new_value); 1118 Subzone *subzone = Subzone::subzone(value); local 1119 if (subzone->block_start(value, q)) subzone->mark_pinned(q);
|