mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-03-02 17:29:03 +00:00
[Allocator] Remove memory poisoning before deallocation
I added the poisoning back in r76891 (2009) because of some bugs in Unladen Swallow, and then Evan Cheng added the setRangeWritable() call in r81308. Profiling a Release+Asserts build on Windows shows that this memory protection call is actually very expensive. 4 seconds of a 70 second Clang compilation are spent in VirtualQuery. These days we have more reliable tools like ASan to find these kinds of bugs, so we can go ahead and retire these checks. llvm-svn: 235542
This commit is contained in:
parent
aab3135993
commit
d3a6227279
@ -320,14 +320,6 @@ private:
|
||||
for (; I != E; ++I) {
|
||||
size_t AllocatedSlabSize =
|
||||
computeSlabSize(std::distance(Slabs.begin(), I));
|
||||
#ifndef NDEBUG
|
||||
// Poison the memory so stale pointers crash sooner. Note we must
|
||||
// preserve the Size and NextPtr fields at the beginning.
|
||||
if (AllocatedSlabSize != 0) {
|
||||
sys::Memory::setRangeWritable(*I, AllocatedSlabSize);
|
||||
memset(*I, 0xCD, AllocatedSlabSize);
|
||||
}
|
||||
#endif
|
||||
Allocator.Deallocate(*I, AllocatedSlabSize);
|
||||
}
|
||||
}
|
||||
@ -337,12 +329,6 @@ private:
|
||||
for (auto &PtrAndSize : CustomSizedSlabs) {
|
||||
void *Ptr = PtrAndSize.first;
|
||||
size_t Size = PtrAndSize.second;
|
||||
#ifndef NDEBUG
|
||||
// Poison the memory so stale pointers crash sooner. Note we must
|
||||
// preserve the Size and NextPtr fields at the beginning.
|
||||
sys::Memory::setRangeWritable(Ptr, Size);
|
||||
memset(Ptr, 0xCD, Size);
|
||||
#endif
|
||||
Allocator.Deallocate(Ptr, Size);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user