Searched refs:subzone (Results 1 - 22 of 22) sorted by relevance

/macosx-10.9.5/libauto-185.5/
H A DZoneCompaction.cpp129 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 DBlockRef.h38 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 DAdmin.cpp115 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 DThreadLocalCollector.cpp60 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 DBlockIterator.h51 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 DReferenceIterator.h127 // 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 DZoneCollectionChecking.cpp69 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 DZoneDump.cpp54 // 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 DRegion.cpp45 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 DBlockRef.cpp34 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 DThread.cpp65 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 DWriteBarrierIterator.h54 while (Subzone *subzone = iterator.next()) {
56 WriteBarrier& wb = subzone->write_barrier();
H A DZoneCollectors.cpp55 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 DAdmin.h57 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 DInUseEnumerator.cpp74 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 DZone.cpp164 // 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 Dauto_gdb_interface.cpp41 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 DThread.h101 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 DZone.h132 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 DThreadLocalCollector.h62 void scan_local_block(Subzone *subzone, usword_t q, void *block);
H A DSubzone.h52 // 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 Dauto_zone.cpp850 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);

Completed in 288 milliseconds