mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 04:17:35 +00:00
AK+Kernel: Avoid double memory clearing of HashTable buckets
Since the allocated memory is going to be zeroed immediately anyway, let's avoid redundantly scrubbing it with MALLOC_SCRUB_BYTE just before that. The latest versions of gcc and Clang can automatically do this malloc + memset -> calloc optimization, but I've seen a couple of places where it failed to be done. This commit also adds a naive kcalloc function to the kernel that doesn't (yet) eliminate the redundancy like the userland does.
This commit is contained in:
parent
cd21e03225
commit
e3eb68dd58
4 changed files with 15 additions and 2 deletions
|
@ -461,12 +461,11 @@ private:
|
|||
auto old_capacity = m_capacity;
|
||||
Iterator old_iter = begin();
|
||||
|
||||
auto* new_buckets = kmalloc(size_in_bytes(new_capacity));
|
||||
auto* new_buckets = kcalloc(1, size_in_bytes(new_capacity));
|
||||
if (!new_buckets)
|
||||
return Error::from_errno(ENOMEM);
|
||||
|
||||
m_buckets = (BucketType*)new_buckets;
|
||||
__builtin_memset(m_buckets, 0, size_in_bytes(new_capacity));
|
||||
|
||||
m_capacity = new_capacity;
|
||||
m_deleted_count = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue