simonmar 2005/06/13 05:29:49 PDT
Modified files:
ghc/includes Block.h
ghc/rts BlockAlloc.c FrontPanel.c
RetainerProfile.c
Log:
Block allocator performance fix: instead of keeping the free list
ordered, keep it doubly-linked, and introduce a new flag BF_FREE so we
can tell when a block is free. We can still coalesce blocks on the
free list because block descriptors are kept consecutively in memory,
so we can tell based on the BF_FREE flag whether to coalesce with the
next higher/lower blocks when freeing a block.
This (almost) make freeChain O(n) rather than O(n^2), and has been
reported to help a lot when dealing with very large heaps.
Revision Changes Path
1.21 +2 -0 fptools/ghc/includes/Block.h
1.22 +99 -56 fptools/ghc/rts/BlockAlloc.c
1.12 +1 -1 fptools/ghc/rts/FrontPanel.c
1.23 +1 -1 fptools/ghc/rts/RetainerProfile.c
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc