Gavriel State gav@transgaming.com writes:
This still doesn't help us: as Ove points out, we still end up allocating from newly created free blocks even if old blocks would suit us better.
But you want to use new blocks in general. The exception is that you want to avoid using the uncommitted part at the end of the heap, and I agree we could do a special case for that. But it has nothing to do with the size of the block.
I've had a brief look at the code referenced by Adam Moss (found at http://g.oswego.edu/dl/html/malloc.html), and it looks like it would be a vast improvement over Wine's current Heap manager. It even has Windows code that uses VirtualAlloc to reserve actual memory.
Yes, that would certainly be better that tweaking the existing code. You may want to look at ptmalloc too, it's supposed to be better at multi-threading (at least to get some ideas, the license is not 100% compatible with ours).