summaryrefslogtreecommitdiff
path: root/libartbase/base/bit_vector.cc
diff options
context:
space:
mode:
author Santiago Aboy Solanes <solanes@google.com> 2024-03-22 10:45:15 +0000
committer Santiago Aboy Solanes <solanes@google.com> 2024-03-25 13:43:14 +0000
commit56dcaeec46dd53e271d6f201d2028996bf19f9dd (patch)
treeea607494f1912d60e838be94919e25db2ec3ac89 /libartbase/base/bit_vector.cc
parent9c4a2b5bb3695349e31a00492731e578e8853a21 (diff)
Remove extra uses of ClearAllBits
ArenaBitVector creation guarantees it starts empty. Add a debug check to make sure this assumption doesn't change. Note that ArenaAllocator guarantees zero-initialized memory but ScopedArenaAllocators do not. This is fine either way since the BitVector constructor calls ClearAllBits. Bug: 329037671 Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b Change-Id: Icbf5e5dd1869e80b5d5828ecca9f13de30c0242b
Diffstat (limited to 'libartbase/base/bit_vector.cc')
-rw-r--r--libartbase/base/bit_vector.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/libartbase/base/bit_vector.cc b/libartbase/base/bit_vector.cc
index 8e3d4c9bf7..85f326385e 100644
--- a/libartbase/base/bit_vector.cc
+++ b/libartbase/base/bit_vector.cc
@@ -46,6 +46,12 @@ BitVector::BitVector(uint32_t start_bits,
BitsToWords(start_bits),
static_cast<uint32_t*>(allocator->Alloc(BitsToWords(start_bits) * kWordBytes))) {
// We don't know if the allocator cleared things.
+ // TODO(solanes): We should be able to remove this call to `ClearAllBits`. Currently we have:
+ // * `MallocAllocator` and `ArenaAllocator` which sets it to zero, and
+ // * `ScopedArenaAllocator` which does not.
+ // We also have `NoopAllocator` but that allocator should never call this method (as the Alloc
+ // call will turn into a LOG(FATAL)).
+ // As a note, MallocAllocator is a misnomer as it uses `calloc` which sets the memory to zero.
ClearAllBits();
}