> The random number is derived from a global, which is incremented by a
> few bits every time a chunk is needed (with a small optimization if
> only one free slot is left).
> 

I have no feedback on this diff but a question on random placing in 
another two functions.

In static void unmap()
        for (i = 0; tounmap > 0 && i < mopts.malloc_cache; i++) {
                r = &d->free_regions[(i + offset) & (mopts.malloc_cache - 
1)];

In static void map()
        for (i = 0; i < mopts.malloc_cache; i++) {
                r = &d->free_regions[(i + offset) & (mopts.malloc_cache - 
1)];

AFAIK
malloc_cache = 64
offset = {0 , 15} interval
free_regions[MALLOC_MAXCACHE] = 256

the effect of logical 'and' is useless because you are only 
really indexing free_regions from i+15, max of 64+15.

If you want to index free_regions randomly over its full range, maybe you 
should do something else?

Thanks,
amit 

Reply via email to