aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
diff options
context:
space:
mode:
authorKostya Kortchinsky <kostyak@google.com>2020-07-16 16:13:04 -0700
committerKostya Kortchinsky <kostyak@google.com>2020-07-24 10:35:49 -0700
commit998334da2b1536e7c8f11c560770c8d4cfacb354 (patch)
tree1b240ab25b467e0e5c5e5acaef9da4a919132e6d /llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
parent3319d05630cdac66412a122efd75dfab073f5093 (diff)
downloadllvm-998334da2b1536e7c8f11c560770c8d4cfacb354.zip
llvm-998334da2b1536e7c8f11c560770c8d4cfacb354.tar.gz
llvm-998334da2b1536e7c8f11c560770c8d4cfacb354.tar.bz2
[scudo][standalone] Change the release loop for efficiency purposes
Summary: On 32-b, the release algo loops multiple times over the freelist for a size class, which lead to a decrease in performance when there were a lot of free blocks. This changes the release functions to loop only once over the freelist, at the cost of using a little bit more memory for the release process: instead of working on one region at a time, we pass the whole memory area covered by all the regions for a given size class, and work on sub-areas of `RegionSize` in this large area. For 64-b, we just have 1 sub-area encompassing the whole region. Of course, not all the sub-areas within that large memory area will belong to the class id we are working on, but those will just be left untouched (which will not add to the RSS during the release process). Reviewers: pcc, cferris, hctim, eugenis Subscribers: llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D83993
Diffstat (limited to 'llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp')
0 files changed, 0 insertions, 0 deletions