summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2015-04-22 20:56:42 +0000
committerReid Kleckner <reid@kleckner.net>2015-04-22 20:56:42 +0000
commit60dea16af4c4799bade66d7a71d573a4a3a9e40c (patch)
treea30e9c864e38933f65bf56724608ef8e8478c728
parente7c28bc19c4e5e8b6add1cc9ece537f05777bb3c (diff)
downloadbcm5719-llvm-60dea16af4c4799bade66d7a71d573a4a3a9e40c.tar.gz
bcm5719-llvm-60dea16af4c4799bade66d7a71d573a4a3a9e40c.zip
[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
-rw-r--r--llvm/include/llvm/Support/Allocator.h14
1 files changed, 0 insertions, 14 deletions
diff --git a/llvm/include/llvm/Support/Allocator.h b/llvm/include/llvm/Support/Allocator.h
index 94cf3e85f36..6ef4344f8fc 100644
--- a/llvm/include/llvm/Support/Allocator.h
+++ b/llvm/include/llvm/Support/Allocator.h
@@ -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);
}
}
OpenPOWER on IntegriCloud