| 118 | |
| 119 | |
| 120 | base::ManualConstructor<T> *GetObject() { |
| 121 | if (free_list_head_ != NULL) { |
| 122 | ListNode *tmp = free_list_head_; |
| 123 | free_list_head_ = tmp->next_on_free_list; |
| 124 | tmp->next_on_free_list = NULL; |
| 125 | DCHECK(tmp->is_on_freelist); |
| 126 | tmp->is_on_freelist = false; |
| 127 | |
| 128 | return static_cast<base::ManualConstructor<T> *>(tmp); |
| 129 | } |
| 130 | auto new_node = new ListNode(); |
| 131 | new_node->next_on_free_list = NULL; |
| 132 | new_node->next_on_alloc_list = alloc_list_head_; |
| 133 | new_node->is_on_freelist = false; |
| 134 | alloc_list_head_ = new_node; |
| 135 | return new_node; |
| 136 | } |
| 137 | |
| 138 | // Keeps track of free objects in this pool. |
| 139 | ListNode *free_list_head_; |
no outgoing calls
no test coverage detected