105 // Just override the next pointer with NULL, just in case we scan this part |
105 // Just override the next pointer with NULL, just in case we scan this part |
106 // of the buffer. |
106 // of the buffer. |
107 res[0] = NULL; |
107 res[0] = NULL; |
108 return res; |
108 return res; |
109 } else { |
109 } else { |
110 return NEW_C_HEAP_ARRAY(void*, _sz); |
110 return (void**) NEW_C_HEAP_ARRAY(char, _sz); |
111 } |
111 } |
112 } |
112 } |
113 |
113 |
114 void PtrQueueSet::deallocate_buffer(void** buf) { |
114 void PtrQueueSet::deallocate_buffer(void** buf) { |
115 assert(_sz > 0, "Didn't set a buffer size."); |
115 assert(_sz > 0, "Didn't set a buffer size."); |
125 size_t n = _buf_free_list_sz / 2; |
125 size_t n = _buf_free_list_sz / 2; |
126 while (n > 0) { |
126 while (n > 0) { |
127 assert(_buf_free_list != NULL, "_buf_free_list_sz must be wrong."); |
127 assert(_buf_free_list != NULL, "_buf_free_list_sz must be wrong."); |
128 void** head = _buf_free_list; |
128 void** head = _buf_free_list; |
129 _buf_free_list = (void**)_buf_free_list[0]; |
129 _buf_free_list = (void**)_buf_free_list[0]; |
130 FREE_C_HEAP_ARRAY(void*,head); |
130 FREE_C_HEAP_ARRAY(char, head); |
|
131 _buf_free_list_sz --; |
131 n--; |
132 n--; |
132 } |
133 } |
133 } |
134 } |
134 |
135 |
135 void PtrQueueSet::enqueue_complete_buffer(void** buf, size_t index, bool ignore_max_completed) { |
136 void PtrQueueSet::enqueue_complete_buffer(void** buf, size_t index, bool ignore_max_completed) { |