Code size analysis#

The following size report details the memory usage of KeyValueStore and FlashPartition.

Label

Segment

Delta

KeyValueStore

FLASH

+336

[section .rodata]

+12

main

-26

pw::kvs::FlashPartition::Erase()

-2

pw::stream::CalculateSeek()

-2

pw::kvs::FlashPartition::size_bytes()

DEL

-26

pw::kvs::FlashPartition::IsErased()

DEL

-16

_GLOBAL__sub_I_base_with_only_flash.cc

-2

pw::kvs::FakeFlashMemory::~FakeFlashMemory()

-2

__llvm_libc_21_0_0_git::internal::exit()

DEL

-8

__aeabi_memmove

NEW

+576

pw::kvs::KeyValueStore::InitializeMetadata()

NEW

+368

pw::kvs::KeyValueStore::Init()

NEW

+308

pw::kvs::internal::EntryCache::Find()

NEW

+308

pw::kvs::internal::Sectors::Find()

NEW

+288

pw::kvs::KeyValueStore::WriteEntry()

NEW

+268

pw::kvs::internal::Sectors::FindSectorToGarbageCollect()

NEW

+264

pw::kvs::KeyValueStore::UpdateEntriesToPrimaryFormat()

NEW

+252

pw::kvs::KeyValueStore::FullMaintenanceHelper()

NEW

+228

pw::kvs::internal::EntryCache::AddNewOrUpdateExisting()

NEW

+200

pw::kvs::KeyValueStore::GarbageCollectSector()

NEW

+200

pw::kvs::KeyValueStore::RemoveDeletedKeyEntries()

NEW

+196

pw::kvs::internal::Entry::VerifyChecksumInFlash()

NEW

+172

pw::kvs::KeyValueStore::GetSectorForWrite()

NEW

+172

pw::kvs::internal::EntryCache::RemoveEntry()

NEW

+168

pw::kvs::KeyValueStore::AppendEntry()

NEW

+168

pw::kvs::internal::Entry::CalculateChecksumFromFlash()

NEW

+152

pw::AlignedWriter::Write()

NEW

+152

pw::kvs::KeyValueStore::FullMaintenanceHelper()::$_0::operator()()

NEW

+144

pw::kvs::KeyValueStore::FixedSizeGet()

NEW

+144

pw::kvs::KeyValueStore::PutBytes()

NEW

+132

pw::kvs::KeyValueStore::CopyEntryToSector()

NEW

+132

pw::kvs::internal::Entry::Copy()

NEW

+128

pw::kvs::KeyValueStore::WriteEntryForNewKey()

NEW

+124

pw::kvs::internal::Entry::Read()

NEW

+122

pw::kvs::KeyValueStore::RelocateEntry()

NEW

+120

pw::kvs::KeyValueStore::GetStorageStats()

NEW

+116

pw::kvs::KeyValueStore::LoadEntry()

NEW

+116

pw::kvs::KeyValueStore::ReadEntry()

NEW

+116

pw::kvs::KeyValueStoreBuffer<>::KeyValueStoreBuffer()

NEW

+114

pw::kvs::KeyValueStore::AddRedundantEntries()

NEW

+112

pw::kvs::KeyValueStore::CheckForErrors()

NEW

+112

pw::kvs::KeyValueStore::RepairCorruptSectors()

NEW

+104

pw::kvs::KeyValueStore::UpdateKeyDescriptor()

NEW

+104

pw::kvs::internal::Entry::ValueMatches()

NEW

+100

pw::kvs::internal::Entry::CalculateChecksum()

NEW

+98

pw::AlignedWrite<>()

NEW

+98

pw::kvs::KeyValueStore::Get()

NEW

+98

pw::kvs::KeyValueStore::ScanForEntry()

NEW

+96

pw::kvs::KeyValueStore::EnsureEntryRedundancy()

NEW

+88

pw::Vector<>::operator[]()

NEW

+86

pw::kvs::internal::Entry::Entry()

NEW

+84

pw::kvs::internal::Entry::ReadValue()

NEW

+80

pw::kvs::internal::Entry::AddPaddingBytesToChecksum()

NEW

+76

pw::kvs::KeyValueStore::RelocateKeyAddressesInSector()

NEW

+76

pw::kvs::internal::EntryCache::AddNew()

NEW

+72

pw::kvs::KeyValueStore::CreateOrUpdateKeyDescriptor()

NEW

+70

pw::AlignedWriter::Flush()

NEW

+68

pw::kvs::KeyValueStore::EnsureFreeSectorExists()

NEW

+66

pw::kvs::KeyValueStore::GetAddressesForWrite()

NEW

+64

pw::kvs::KeyValueStore::CreateEntry()

NEW

+60

pw::kvs::internal::Entry::Write()

NEW

+58

pw::AlignedWriter::AddBytesToBuffer()

NEW

+58

pw::kvs::KeyValueStore::KeyValueStore()

NEW

+58

pw::kvs::internal::EntryMetadata::RemoveAddress()

NEW

+56

pw::kvs::internal::Entry::VerifyChecksum()

NEW

+56

pw::kvs::internal::Entry::size()

NEW

+54

pw::kvs::KeyValueStore::FixErrors()

NEW

+52

pw::AlignDown()

NEW

+50

pw::kvs::KeyValueStore::WriteEntryForExistingKey()

NEW

+48

pw::AlignUp()

NEW

+48

std::__2::basic_string_view<>::compare()

NEW

+46

pw::kvs::internal::Sectors::Reset()

NEW

+44

_GLOBAL__sub_I_with_kvs.cc

NEW

+44

pw::kvs::KeyValueStore::FindEntry()

NEW

+44

pw::kvs::internal::Sectors::AddressInSector()

NEW

+42

pw::kvs::internal::EntryCache::Iterator<>::operator*()

NEW

+40

pw::AlignedWriterBuffer<>::AlignedWriterBuffer<>()

NEW

+40

pw::kvs::KeyValueStore::ValueSize()

NEW

+40

pw::kvs::internal::Entry::Tombstone()

NEW

+40

pw::kvs::internal::Entry::descriptor()

NEW

+40

pw::kvs::internal::EntryCache::FindIndex()

NEW

+40

pw::kvs::internal::EntryMetadata::Reset()

NEW

+40

pw::kvs::internal::Hash()

NEW

+40

pw::kvs::internal::Sectors::NextWritableAddress()

NEW

+38

pw::kvs::ChecksumAlgorithm::Verify()

NEW

+38

pw::kvs::KeyValueStore::GarbageCollect()

NEW

+38

pw::kvs::internal::EntryCache::ResetAddresses()

NEW

+38

pw::kvs::internal::EntryCache::addresses()

NEW

+36

pw::kvs::FlashPartition::Input::DoRead()

NEW

+36

pw::kvs::KeyValueStore::Repair()

NEW

+36

pw::kvs::internal::Entry::Valid()

NEW

+36

pw::kvs::internal::EntryCache::present_entries()

NEW

+34

memcmp

NEW

+34

pw::AlignedWriter::AlignedWriter()

NEW

+34

pw::kvs::FlashPartition::Output::DoWrite()

NEW

+34

pw::kvs::internal::Sectors::FindSpaceDuringGarbageCollection()

NEW

+32

_ZNSt3__2eqB8nn210000IcNS_11char_traitsIcEEEEbNS_17basic_string_viewIT_T0_EES6_

NEW

+32

pw::kvs::KeyValueStore::FindExisting()

NEW

+32

pw::kvs::internal::(anonymous namespace)::Contains<>()

NEW

+32

pw::kvs::internal::EntryCache::AddAddressIfRoom()

NEW

+32

pw::kvs::internal::Sectors::FromAddress()

NEW

+32

pw::kvs::internal::Sectors::WearLeveledSectorFromIndex()

NEW

+30

pw::Vector<>::emplace_back<>()

NEW

+30

pw::kvs::FlashPartition::AppearsErased()

NEW

+30

pw::kvs::internal::Entry::Update()

NEW

+26

pw::Vector<>::Append()

NEW

+26

pw::kvs::internal::Entry::ReadKey()

NEW

+26

pw::kvs::internal::EntryFormats::Find()

NEW

+26

pw::kvs::internal::Sectors::FindSpace()

NEW

+24

pw::kvs::internal::Entry::ReadKey<>()

NEW

+22

pw::kvs::internal::Sectors::BaseAddress()

NEW

+20

_ZN2pw3kvs13KeyValueStore3PutIjTnPNSt3__29enable_ifIXntsr14ConvertsToSpanIT_EE5valueEvE4typeELPv0EEENS_6StatusERKNS3_17basic_string_viewIcNS3_11char_traitsIcEEEERKS5_

NEW

+20

pw::kvs::KeyValueStore::Get<>()

NEW

+18

_ZNSt3__26__findB8nn210000IPPKN2pw3kvs8internal16SectorDescriptorES7_PS4_NS_10__identityEEET_SA_T0_RKT1_RT2_

NEW

+12

pw::Padding()

NEW

+12

pw::Vector<>::assign()

NEW

+12

pw::kvs::FlashPartition::Input

NEW

+12

pw::kvs::FlashPartition::Output

NEW

+12

pw::kvs::internal::Entry::next_address()

NEW

+12

pw::kvs::internal::EntryFormats::KnownMagic()

NEW

+12

pw::kvs::internal::Sectors::set_last_new_sector()

NEW

+10

_ZNSt3__24findB8nn210000IPPKN2pw3kvs8internal16SectorDescriptorEPS4_EET_S9_S9_RKT0_

NEW

+10

pw::kvs::KeyValueStore::HeavyMaintenance()

NEW

+8

__aeabi_memmove4

NEW

+8

kvs_format

+10,144

RAM

DEL

-4

test_partition

DEL

-3

is_erased

+3

is_set

NEW

+992

kvs

NEW

+4

kvs_entry_count

+992

FlashPartition

FLASH

+464

[section .rodata]

+24

[section .text]

+64

main

+2

pw::stream::CalculateSeek()

-16

__pre_init_runtime_init_per_core_irq_priorities

+6

operator delete()

+12

vClearInterruptMaskFromISR

-2

pw::stream::Stream::~Stream()

NEW

+184

pw::kvs::FakeFlashMemory::Write()

NEW

+154

pw::kvs::FlashPartition::Erase()

NEW

+152

pw::kvs::FlashPartition::Write()

NEW

+116

pw::kvs::FlashPartition::FlashPartition()

NEW

+108

pw::kvs::FlashPartition::IsRegionErased()

NEW

+100

pw::kvs::FakeFlashMemory::Erase()

NEW

+96

pw::kvs::FlashError::Check()

NEW

+68

pw::kvs::FakeFlashMemory::Read()

NEW

+68

pw::kvs::FakeFlashMemoryBuffer<>::FakeFlashMemoryBuffer()

NEW

+60

pw::kvs::FlashMemory::FlashMemory()

NEW

+56

pw::kvs::FakeFlashMemory::FakeFlashMemory()

NEW

+56

pw::kvs::FlashPartition::CheckBounds()

NEW

+52

pw::kvs::FlashPartition::Read()

NEW

+48

pw::kvs::FakeFlashMemory

NEW

+48

pw::kvs::FakeFlashMemoryBuffer<>

NEW

+48

pw::kvs::FlashMemory

NEW

+48

pw::kvs::FlashPartition

NEW

+44

pw::kvs::FakeFlashMemory::FlashAddressToMcuAddress()

NEW

+32

_GLOBAL__sub_I_fake_flash_test_partition.cc

NEW

+28

pw::kvs::FlashPartition::size_bytes()

NEW

+26

pw::kvs::FlashPartition::IsErased()

NEW

+24

__aeabi_uidivmod

NEW

+22

pw::kvs::FlashPartition::PartitionToFlashAddress()

NEW

+16

_GLOBAL__sub_I_base_with_only_flash.cc

NEW

+12

pw::kvs::FakeFlashMemory::~FakeFlashMemory()

NEW

+12

pw::kvs::FakeFlashMemoryBuffer<>::~FakeFlashMemoryBuffer()

NEW

+12

pw::kvs::FlashPartition::~FlashPartition()

NEW

+8

pw::kvs::FlashTestPartition()

NEW

+6

pw::kvs::FlashMemory::FlashAddressToMcuAddress()

NEW

+6

pw::kvs::FlashMemory::SelfTest()

NEW

+6

pw::kvs::FlashPartition::sector_size_bytes()

NEW

+4

pw::kvs::FakeFlashMemory::Disable()

NEW

+4

pw::kvs::FakeFlashMemory::Enable()

NEW

+4

pw::kvs::FakeFlashMemory::IsEnabled()

NEW

+4

pw::kvs::FlashMemory::~FlashMemory()

NEW

+4

pw::kvs::FlashPartition::Init()

NEW

+4

pw::kvs::FlashPartition::sector_count()

NEW

+2

__cxa_pure_virtual

+2,296

RAM

-3

is_set

NEW

+384

pw::kvs::(anonymous namespace)::test_flash

NEW

+24

pw::kvs::(anonymous namespace)::test_partition

NEW

+4

test_partition

NEW

+3

is_erased

+412