Special case Recycler::clear(BumpPtrAllocator).
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 4 Jan 2013 22:35:45 +0000 (22:35 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 4 Jan 2013 22:35:45 +0000 (22:35 +0000)
commitb2e01b3707e23276a087f0f67edfc86082acdaa2
tree9a7ecb400c6e432658aad0d36c4d184a4e59551a
parent7c5c12bd4d60070c90161df9f6ae078c1f7b1ce5
Special case Recycler::clear(BumpPtrAllocator).

A BumpPtrAllocator has an empty Deallocate() method, but
Recycler::clear() would still call it for every single object ever
allocated, bringing all those objects into cache. As a bonus,
iplist::remove() will also write to the Prev/Next pointers on all the
objects, so all those cache lines have to be written back to RAM before
the pages are given back to the OS.

Stop wasting time and memory bandwith by using the new
clearAndLeakUnsafely() function to jettison all the recycled objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171541 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Support/Recycler.h