Rev 2881 | Rev 2889 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2881 | Rev 2884 | ||
---|---|---|---|
Line 115... | Line 115... | ||
115 | * too many zero-sized nodes). |
115 | * too many zero-sized nodes). |
116 | */ |
116 | */ |
117 | return false; |
117 | return false; |
118 | } |
118 | } |
119 | 119 | ||
120 | /** If possible, merge two intervals of freed indices. */ |
120 | /** If possible, coalesce two intervals of freed indices. */ |
121 | static void try_merge_intervals(link_t *l, link_t *r, link_t *cur) |
121 | static void try_coalesce_intervals(link_t *l, link_t *r, link_t *cur) |
122 | { |
122 | { |
123 | freed_t *fl = list_get_instance(l, freed_t, link); |
123 | freed_t *fl = list_get_instance(l, freed_t, link); |
124 | freed_t *fr = list_get_instance(r, freed_t, link); |
124 | freed_t *fr = list_get_instance(r, freed_t, link); |
125 | 125 | ||
126 | if (fl->last + 1 == fr->first) { |
126 | if (fl->last + 1 == fr->first) { |
Line 168... | Line 168... | ||
168 | lnk = lnk->next) { |
168 | lnk = lnk->next) { |
169 | freed_t *f = list_get_instance(lnk, freed_t, link); |
169 | freed_t *f = list_get_instance(lnk, freed_t, link); |
170 | if (f->first == index + 1) { |
170 | if (f->first == index + 1) { |
171 | f->first--; |
171 | f->first--; |
172 | if (lnk->prev != &u->freed_head) |
172 | if (lnk->prev != &u->freed_head) |
173 | try_merge_intervals(lnk->prev, lnk, |
173 | try_coalesce_intervals(lnk->prev, lnk, |
174 | lnk); |
174 | lnk); |
175 | return; |
175 | return; |
176 | } |
176 | } |
177 | if (f->last == index - 1) { |
177 | if (f->last == index - 1) { |
178 | f->last++; |
178 | f->last++; |
179 | if (lnk->next != &u->freed_head) |
179 | if (lnk->next != &u->freed_head) |
180 | try_merge_intervals(lnk, lnk->next, |
180 | try_coalesce_intervals(lnk, lnk->next, |
181 | lnk); |
181 | lnk); |
182 | return; |
182 | return; |
183 | } |
183 | } |
184 | if (index > f->first) { |
184 | if (index > f->first) { |
185 | n = malloc(sizeof(freed_t)); |
185 | n = malloc(sizeof(freed_t)); |