Larger blocks are more convenient for compressions.
Blocks are allocated with MmapNoReserveOrDie to save some memory.
Also it's 15% faster on StackDepotBenchmarkSuite
Depends on D114464.
Paths
| Differential D114488
[sanitizer] Switch StackStore to 8 MiB blocks ClosedPublic Authored by vitalybuka on Nov 23 2021, 5:03 PM.
Details Summary Larger blocks are more convenient for compressions. Also it's 15% faster on StackDepotBenchmarkSuite Depends on D114464.
Diff Detail
Event Timelinevitalybuka added a child revision: D114489: [sanitizer] Switch StackStore from pointers to 32bit IDs.Nov 23 2021, 5:38 PM Comment Actions I think this could be a thin wrapper around TwoLevelMap.
Comment Actions
Looking at the subsequent commits, it probably can't be TwoLevelMap. Comment Actions
yep. I need to pack and unmap blocks, which is not supported by TwoLevelMap. If we add that into TwoLevelMap it will be more branching or syncronization of fast path of TwoLevelMap which is used is allocator.
This revision is now accepted and ready to land.Nov 24 2021, 11:35 AM
Closed by commit rG8ae815cb19a0: [sanitizer] Switch StackStore to 8 MiB blocks (authored by vitalybuka). · Explain WhyNov 26 2021, 2:00 PM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 390119 compiler-rt/lib/sanitizer_common/sanitizer_stack_store.hcompiler-rt/lib/sanitizer_common/sanitizer_stack_store.cpp
compiler-rt/test/hwasan/TestCases/Linux/decorate-proc-maps.c
|
Does this = {} do anything? It confuses me. It produces impression that it initializes something, but does it?