@@ -68,21 +68,16 @@ static slab_t *create_slab(bucket_t *bucket) {
68
68
slab -> first_free_chunk_idx = 0 ;
69
69
slab -> bucket = bucket ;
70
70
71
- slab -> iter = umf_ba_global_alloc (sizeof (* slab -> iter ));
72
- if (slab -> iter == NULL ) {
73
- LOG_ERR ("allocation of new slab iter failed!" );
74
- goto free_slab ;
75
- }
76
- slab -> iter -> val = slab ;
77
- slab -> iter -> prev = slab -> iter -> next = NULL ;
71
+ slab -> iter .val = slab ;
72
+ slab -> iter .prev = slab -> iter .next = NULL ;
78
73
79
74
slab -> num_chunks_total =
80
75
utils_max (bucket_slab_min_size (bucket ) / bucket -> size , 1 );
81
76
slab -> chunks =
82
77
umf_ba_global_alloc (sizeof (* slab -> chunks ) * slab -> num_chunks_total );
83
78
if (slab -> chunks == NULL ) {
84
79
LOG_ERR ("allocation of slab chunks failed!" );
85
- goto free_slab_iter ;
80
+ goto free_slab ;
86
81
}
87
82
memset (slab -> chunks , 0 , sizeof (* slab -> chunks ) * slab -> num_chunks_total );
88
83
@@ -111,9 +106,6 @@ static slab_t *create_slab(bucket_t *bucket) {
111
106
free_slab_chunks :
112
107
umf_ba_global_free (slab -> chunks );
113
108
114
- free_slab_iter :
115
- umf_ba_global_free (slab -> iter );
116
-
117
109
free_slab :
118
110
umf_ba_global_free (slab );
119
111
return NULL ;
@@ -131,7 +123,6 @@ static void destroy_slab(slab_t *slab) {
131
123
}
132
124
133
125
umf_ba_global_free (slab -> chunks );
134
- umf_ba_global_free (slab -> iter );
135
126
umf_ba_global_free (slab );
136
127
}
137
128
@@ -296,7 +287,7 @@ static void bucket_free_chunk(bucket_t *bucket, void *ptr, slab_t *slab,
296
287
// in case if the slab was previously full and now has single available
297
288
// chunk, it should be moved to the list of available slabs
298
289
if (slab_get_num_free_chunks (slab ) == 1 ) {
299
- slab_list_item_t * slab_it = slab -> iter ;
290
+ slab_list_item_t * slab_it = & slab -> iter ;
300
291
assert (slab_it -> val != NULL );
301
292
DL_DELETE (bucket -> unavailable_slabs , slab_it );
302
293
DL_PREPEND (bucket -> available_slabs , slab_it );
@@ -312,7 +303,7 @@ static void bucket_free_chunk(bucket_t *bucket, void *ptr, slab_t *slab,
312
303
* to_pool = bucket_can_pool (bucket );
313
304
if (* to_pool == false) {
314
305
// remove slab
315
- slab_list_item_t * slab_it = slab -> iter ;
306
+ slab_list_item_t * slab_it = & slab -> iter ;
316
307
assert (slab_it -> val != NULL );
317
308
slab_unreg (slab_it -> val );
318
309
DL_DELETE (bucket -> available_slabs , slab_it );
@@ -364,7 +355,7 @@ static slab_t *bucket_create_slab(bucket_t *bucket) {
364
355
return NULL ;
365
356
}
366
357
367
- DL_PREPEND (bucket -> available_slabs , slab -> iter );
358
+ DL_PREPEND (bucket -> available_slabs , & slab -> iter );
368
359
bucket -> available_slabs_num ++ ;
369
360
bucket_update_stats (bucket , 1 , 0 );
370
361
0 commit comments