Queues#

pw_containers: Generic collections of objects for embedded devices

A queue is an ordered collection designed to add items at one end and remove them from the other. This allows “first in, first out”, or FIFO, behavior. Pigweed provides both single and double-ended queues that are backed by fixed or dynamic storage.

Pigweed provides many queue and deque implementations to meet different needs.

API reference#

Moved: pw_containers_queues

pw::InlineVarLenEntryQueue#

InlineVarLenEntryQueue is a queue of inline variable-length binary entries. It is implemented as a ring (circular) buffer and supports operations to append entries and overwrite if necessary. Entries may be zero bytes up to the maximum size supported by the queue.

InlineVarLenEntryQueue has a few interesting properties:

  • Data and metadata are stored inline in a contiguous block of uint32_t-aligned memory.

  • The data structure is trivially copyable.

  • All state changes are accomplished with a single update to a uint32_t. The memory is always in a valid state and may be parsed offline.

This data structure is a much simpler version of PrefixedEntryRingBuffer. Prefer this sized-entry ring buffer to PrefixedEntryRingBuffer when:

  • A simple ring buffer of variable-length entries is needed. Advanced features like multiple readers and a user-defined preamble are not required.

  • A consistent, parsable, in-memory representation is required (e.g. to decode the buffer from a block of memory).

  • C support is required.

InlineVarLenEntryQueue is implemented in C and provides complete C and C++ APIs. The InlineVarLenEntryQueue C++ class is structured similarly to pw::InlineQueue and pw::Vector.

Queue vs. deque#

This module provides pw::InlineVarLenEntryQueue, but no corresponding InlineVarLenEntryDeque class. Following the C++ Standard Library style, the deque class would provide push_front() and pop_back() operations in addition to push_back() and pop_front() (equivalent to a queue’s push() and pop()).

There is no InlineVarLenEntryDeque class because there is no efficient way to implement push_front() and pop_back(). These operations would necessarily be O(n), since each entry knows the position of the next entry, but not the previous, as in a single-linked list. Given that these operations would be inefficient and unlikely to be used, they are not implemented, and only a queue class is provided.

Example#

Queues are declared with their max size (InlineVarLenEntryQueue<kMaxSize>) but may be used without specifying the size (InlineVarLenEntryQueue<>&).

// Declare a queue with capacity sufficient for one 10-byte entry or
// multiple smaller entries.
pw::InlineVarLenEntryQueue<10> queue;

// Push an entry, asserting if the entry does not fit.
queue.push(queue, data)

// Use push_overwrite() to push entries, overwriting older entries
// as needed.
queue.push_overwrite(queue, more_data)

// Remove an entry.
queue.pop();

Alternately, a InlineVarLenEntryQueue may be initialized in an existing uint32_t array.

// Initialize a InlineVarLenEntryQueue.
uint32_t buffer[32];
auto& queue = pw::InlineVarLenEntryQueue<>::Init(buffer);

// Largest supported entry is 114 B (13 B overhead + 1 B prefix)
assert(queue.max_size_bytes() == 114u);

// Write data
queue.push_overwrite(data);

A InlineVarLenEntryQueue may be declared and initialized in C with the PW_VARIABLE_LENGTH_ENTRY_QUEUE_DECLARE macro.

// Declare a queue with capacity sufficient for one 10-byte entry or
// multiple smaller entries.
PW_VARIABLE_LENGTH_ENTRY_QUEUE_DECLARE(queue, 10);

// Push an entry, asserting if the entry does not fit.
pw_InlineVarLenEntryQueue_Push(queue, "12345", 5);

// Use push_overwrite() to push entries, overwriting older entries
// as needed.
pw_InlineVarLenEntryQueue_PushOverwrite(queue, "abcdefg", 7);

// Remove an entry.
pw_InlineVarLenEntryQueue_Pop(queue);

Alternately, a InlineVarLenEntryQueue may be initialized in an existing uint32_t array.

// Initialize a InlineVarLenEntryQueue.
uint32_t buffer[32];
pw_InlineVarLenEntryQueue_Init(buffer, 32);

// Largest supported entry is 114 B (13 B overhead + 1 B prefix)
assert(pw_InlineVarLenEntryQueue_MaxSizeBytes(buffer) == 114u);

// Write some data
pw_InlineVarLenEntryQueue_PushOverwrite(buffer, "123", 3);

Python API reference#

Decodes the in-memory representation of a sized-entry ring buffer.

pw_containers.inline_var_len_entry_queue.parse(queue: bytes) Iterable[bytes]#

Decodes the in-memory representation of a variable-length entry queue.

Parameters:

queue – The bytes representation of a variable-length entry queue.

Yields:

Each entry in the buffer as bytes.

Size reports#

The tables below illustrate the following scenarios:

  • Scenarios related to std::deque, as a baseline:

    • The memory and code size cost incurred by a adding a single std::deque.

    • The memory and code size cost incurred by adding another std::deque with a different type. As std::deque is templated on type, this results in additional code being generated.

  • Scenarios related to DynamicDeque:

    • The memory and code size cost incurred by a adding a single DynamicDeque.

    • The memory and code size cost incurred by adding another DynamicDeque with a different type. As DynamicDeque is templated on type, this results in additional code being generated.

  • Scenarios related to InlineDeque:

    • The memory and code size cost incurred by a adding a single InlineDeque.

    • The memory and code size cost incurred by adding another InlineDeque with a different type. As InlineDeque is templated on type, this results in additional code being generated.

  • Scenarios related to InlineQueue:

    • The memory and code size cost incurred by a adding a single InlineQueue.

    • The memory and code size cost incurred by adding another InlineQueue with a different type. As InlineQueue is templated on type, this results in additional code being generated.

  • The memory and code size cost incurred by adding both an InlineDeque and an InlineQueue of the same type. These types reuse code, so the combined sum is less than the sum of its parts.

Label

Segment

Delta

std::deque

FLASH

+56

[section .rodata]

+4

pw::containers::size_report::Measure()

+2

pw::allocator::LibCAllocator::DoReallocate()

+8

vClearInterruptMaskFromISR

DEL

-8

__aeabi_memmove

NEW

+718

std::__2::deque<>::__add_front_capacity()

NEW

+604

std::__2::deque<>::__add_back_capacity()

NEW

+592

std::__2::__split_buffer<>::emplace_back<>()

NEW

+512

std::__2::deque<>::insert()

NEW

+444

std::__2::__split_buffer<>::emplace_front<>()

NEW

+352

std::__2::deque<>::erase()

NEW

+262

_ZN2pw10containers11size_report12MeasureDequeINSt3__25dequeIjNS3_9allocatorIjEEEETpTnRiJENS3_11__wrap_iterIPjEEEEiRT_T1_SE_j

NEW

+204

std::__2::deque<>::__move_construct_backward_and_check()

NEW

+184

std::__2::deque<>::__move_backward_and_check()

NEW

+180

std::__2::deque<>::__move_construct_and_check()

NEW

+168

std::__2::deque<>::__move_and_check()

NEW

+144

std::__2::deque<>::__erase_to_end()

NEW

+136

_ZNSt3__25dequeIjNS_9allocatorIjEEE18__append_with_sizeB8nn210000INS_11__wrap_iterIPjEEEEvT_j

NEW

+132

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn210000INS_16__deque_iteratorIjPjRjPS5_iLi0EEES8_TnNS_9enable_ifIXsr23__is_segmented_iteratorIT_EE5valueEiE4typeELi0EEENS_4pairISA_T0_EESA_SA_SE_

NEW

+126

std::__2::deque<>::__append()

NEW

+116

std::__2::deque<>::clear()

NEW

+106

_ZNKSt3__211__copy_implclB8nn210000IPjNS_16__deque_iteratorIjS2_RjPS2_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuentsr23__is_segmented_iteratorIS8_EE5valuesr23__is_segmented_iteratorIT0_EE5valueEiE4typeELi0EEENS_4pairIS8_S9_EES8_S8_S9_

NEW

+106

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn210000IPjNS_16__deque_iteratorIjS4_RjPS4_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuentsr23__is_segmented_iteratorISA_EE5valuesr23__is_segmented_iteratorIT0_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_SA_SB_

NEW

+102

std::__2::__split_buffer<>::shrink_to_fit()

NEW

+96

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn210000IPjNS_16__deque_iteratorIjS4_RjPS4_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuentsr23__is_segmented_iteratorISA_EE5valuesr23__is_segmented_iteratorIT0_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_SA_SB_

NEW

+96

_ZNSt3__25dequeIjNS_9allocatorIjEEE32__assign_with_size_random_accessB8nn210000INS_11__wrap_iterIPjEEEEvT_i

NEW

+68

_ZNSt3__216__deque_iteratorIjPKjRS1_PKS2_iLi0EEpLB8nn210000Ei

NEW

+68

_ZNSt3__216__deque_iteratorIjPjRjPS1_iLi0EEpLB8nn210000Ei

NEW

+68

std::__2::deque<>::shrink_to_fit()

NEW

+66

std::__2::deque<>::push_front()

NEW

+60

std::__2::deque<>::resize()

NEW

+56

_ZNSt3__218__for_each_segmentB8nn210000INS_16__deque_iteratorIjPjRjPS2_iLi0EEENS_11__move_implINS_17_ClassicAlgPolicyEE12_MoveSegmentIS5_S5_EEEEvT_SB_T0_

NEW

+56

_ZNSt3__25dequeIjNS_9allocatorIjEEE26__maybe_remove_front_spareB8nn210000Eb

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_11__move_implINS_17_ClassicAlgPolicyEEENS_16__deque_iteratorIjPjRjPS5_iLi0EEES8_S8_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEENS_16__deque_iteratorIjPjRjPS5_iLi0EEES8_S8_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+54

_ZNSt3__25dequeIjNS_9allocatorIjEEE25__maybe_remove_back_spareB8nn210000Eb

NEW

+52

_ZN2pw10containers11size_report15MeasureStdDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+46

std::__2::__split_buffer<>::__split_buffer()

NEW

+44

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn210000INS_16__deque_iteratorIjPjRjPS5_iLi0EEES8_TnNS_9enable_ifIXsr23__is_segmented_iteratorIT_EE5valueEiE4typeELi0EEENS_4pairISA_T0_EESA_SA_SE_

NEW

+44

std::__2::deque<>::push_back()

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_11__copy_implENS_11__wrap_iterIPjEES4_NS_16__deque_iteratorIjS3_RjPS3_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_11__move_implINS_17_ClassicAlgPolicyEEEPjS4_NS_16__deque_iteratorIjS4_RjPS4_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEEPjS4_NS_16__deque_iteratorIjS4_RjPS4_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

pw::containers::size_report::MeasureContainer<>()

NEW

+40

_ZNSt3__2miB8nn210000ERKNS_16__deque_iteratorIjPKjRS1_PKS2_iLi0EEES8_

NEW

+40

_ZNSt3__2miB8nn210000ERKNS_16__deque_iteratorIjPjRjPS1_iLi0EEES6_

NEW

+38

_ZNSt3__25dequeIjNS_9allocatorIjEEE3endB8nn210000Ev

NEW

+36

_ZNSt3__213move_backwardB8nn210000INS_16__deque_iteratorIjPjRjPS2_iLi0EEES5_EET0_T_S7_S6_

NEW

+36

_ZNSt3__24moveB8nn210000INS_16__deque_iteratorIjPjRjPS2_iLi0EEES5_EET0_T_S7_S6_

NEW

+36

_ZNSt3__25dequeIjNS_9allocatorIjEEE5beginB8nn210000Ev

NEW

+36

_ZNSt3__28__fill_nB8nn210000INS_16__deque_iteratorIjPjRjPS2_iLi0EEEjjEET_S6_T0_RKT1_

NEW

+28

_ZNKSt3__25dequeIjNS_9allocatorIjEEE12__back_spareB8nn210000Ev

NEW

+28

_ZNSt3__211__move_implINS_17_ClassicAlgPolicyEE12_MoveSegmentINS_16__deque_iteratorIjPjRjPS5_iLi0EEES8_EclB8nn210000ES5_S5_

NEW

+26

std::__2::__split_buffer<>::__construct_at_end_with_size<>()

NEW

+26

std::__2::__split_buffer<>::~__split_buffer()

NEW

+24

_ZNSt3__213move_backwardB8nn210000IPjNS_16__deque_iteratorIjS1_RjPS1_iLi0EEEEET0_T_S7_S6_

NEW

+24

_ZNSt3__24copyB8nn210000INS_11__wrap_iterIPjEENS_16__deque_iteratorIjS2_RjPS2_iLi0EEEEET0_T_S9_S8_

NEW

+24

_ZNSt3__24moveB8nn210000IPjNS_16__deque_iteratorIjS1_RjPS1_iLi0EEEEET0_T_S7_S6_

NEW

+24

std::__2::deque<>::back()

NEW

+22

std::__2::deque<>::pop_front()

NEW

+20

_ZNSt3__210unique_ptrIPjNS_22__allocator_destructorINS_9allocatorIjEEEEE5resetB8nn210000ES1_

NEW

+18

_ZNSt3__29allocatorIPjE8allocateB8nn210000Ej

NEW

+16

_ZNSt3__222__allocator_destructorINS_9allocatorIjEEEclB8nn210000EPj

NEW

+16

_ZNSt3__26copy_nB8nn210000INS_11__wrap_iterIPjEEiNS_16__deque_iteratorIjS2_RjPS2_iLi0EEETnNS_9enable_ifIXsr37__has_random_access_iterator_categoryIT_EE5valueEiE4typeELi0EEET1_S9_T0_SC_

NEW

+16

std::__2::deque<>::pop_back()

NEW

+14

_ZNSt3__210unique_ptrIPjNS_22__allocator_destructorINS_9allocatorIjEEEEED2B8nn210000Ev

NEW

+14

_ZNSt3__214__split_bufferIPjNS_9allocatorIS1_EEE17__destruct_at_endB8nn210000EPS1_

NEW

+14

_ZNSt3__214__split_bufferIPjRNS_9allocatorIS1_EEE17__destruct_at_endB8nn210000EPS1_

NEW

+12

_ZNSt3__214__split_bufferIPjNS_9allocatorIS1_EEE8pop_backB8nn210000Ev

NEW

+12

_ZNSt3__214__split_bufferIPjRNS_9allocatorIS1_EEE18__construct_at_endINS_13move_iteratorIPS1_EETnNS_9enable_ifIXsr31__has_forward_iterator_categoryIT_EE5valueEiE4typeELi0EEEvSB_SB_

NEW

+12

_ZNSt3__25dequeIjNS_9allocatorIjEEE6assignINS_11__wrap_iterIPjEETnNS_9enable_ifIXsr37__has_random_access_iterator_categoryIT_EE5valueEiE4typeELi0EEEvS9_S9_

NEW

+12

_ZSt28__throw_bad_array_new_lengthB8nn210000v

NEW

+10

_ZNKSt3__25dequeIjNS_9allocatorIjEEE19__back_spare_blocksB8nn210000Ev

NEW

+10

_ZNSt3__214__split_bufferIPjRNS_9allocatorIS1_EEE5clearB8nn210000Ev

NEW

+10

_ZNSt3__216__deque_iteratorIjPKjRS1_PKS2_iLi0EEmIB8nn210000Ei

NEW

+10

_ZNSt3__216__deque_iteratorIjPjRjPS1_iLi0EEmIB8nn210000Ei

NEW

+8

__aeabi_memmove4

NEW

+8

operator new()

NEW

+8

std::__2::__libcpp_verbose_abort()

+7,128

RAM

+8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+39

pw::containers::size_report::GetItems<>()::items

NEW

+24

_ZZN2pw10containers11size_report15MeasureStdDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_jE9std_deque

NEW

+4

_ZGVZN2pw10containers11size_report15MeasureStdDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_jE9std_deque

+76

Additional std::deque with different item type

FLASH

+720

std::__2::deque<>::__add_front_capacity()

+604

std::__2::deque<>::__add_back_capacity()

+592

std::__2::__split_buffer<>::emplace_back<>()

+518

std::__2::deque<>::insert()

+444

std::__2::__split_buffer<>::emplace_front<>()

+352

std::__2::deque<>::erase()

+212

std::__2::deque<>::__move_construct_backward_and_check()

+186

std::__2::deque<>::__move_backward_and_check()

+188

std::__2::deque<>::__move_construct_and_check()

+168

std::__2::deque<>::__move_and_check()

+144

std::__2::deque<>::__erase_to_end()

+138

std::__2::deque<>::__append()

+116

std::__2::deque<>::clear()

+102

std::__2::__split_buffer<>::shrink_to_fit()

+68

std::__2::deque<>::shrink_to_fit()

+70

std::__2::deque<>::push_front()

+60

std::__2::deque<>::resize()

+46

std::__2::__split_buffer<>::__split_buffer()

+48

std::__2::deque<>::push_back()

+42

pw::containers::size_report::MeasureContainer<>()

+20

pw::containers::size_report::Measure()

+24

std::__2::__split_buffer<>::__construct_at_end_with_size<>()

+26

std::__2::__split_buffer<>::~__split_buffer()

+24

std::__2::deque<>::back()

-2

pw::allocator::LibCAllocator::DoReallocate()

+22

std::__2::deque<>::pop_front()

-12

vClearInterruptMaskFromISR

+16

std::__2::deque<>::pop_back()

NEW

+284

_ZN2pw10containers11size_report12MeasureDequeINSt3__25dequeIyNS3_9allocatorIyEEEETpTnRiJENS3_11__wrap_iterIPyEEEEiRT_T1_SE_j

NEW

+144

_ZNSt3__25dequeIyNS_9allocatorIyEEE18__append_with_sizeB8nn210000INS_11__wrap_iterIPyEEEEvT_j

NEW

+132

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn210000INS_16__deque_iteratorIyPyRyPS5_iLi0EEES8_TnNS_9enable_ifIXsr23__is_segmented_iteratorIT_EE5valueEiE4typeELi0EEENS_4pairISA_T0_EESA_SA_SE_

NEW

+106

_ZNKSt3__211__copy_implclB8nn210000IPyNS_16__deque_iteratorIyS2_RyPS2_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuentsr23__is_segmented_iteratorIS8_EE5valuesr23__is_segmented_iteratorIT0_EE5valueEiE4typeELi0EEENS_4pairIS8_S9_EES8_S8_S9_

NEW

+106

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn210000IPyNS_16__deque_iteratorIyS4_RyPS4_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuentsr23__is_segmented_iteratorISA_EE5valuesr23__is_segmented_iteratorIT0_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_SA_SB_

NEW

+96

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn210000IPyNS_16__deque_iteratorIyS4_RyPS4_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuentsr23__is_segmented_iteratorISA_EE5valuesr23__is_segmented_iteratorIT0_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_SA_SB_

NEW

+96

_ZNSt3__25dequeIyNS_9allocatorIyEEE32__assign_with_size_random_accessB8nn210000INS_11__wrap_iterIPyEEEEvT_i

NEW

+68

_ZNSt3__216__deque_iteratorIyPKyRS1_PKS2_iLi0EEpLB8nn210000Ei

NEW

+68

_ZNSt3__216__deque_iteratorIyPyRyPS1_iLi0EEpLB8nn210000Ei

NEW

+56

_ZNSt3__218__for_each_segmentB8nn210000INS_16__deque_iteratorIyPyRyPS2_iLi0EEENS_11__move_implINS_17_ClassicAlgPolicyEE12_MoveSegmentIS5_S5_EEEEvT_SB_T0_

NEW

+56

_ZNSt3__25dequeIyNS_9allocatorIyEEE26__maybe_remove_front_spareB8nn210000Eb

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_11__move_implINS_17_ClassicAlgPolicyEEENS_16__deque_iteratorIyPyRyPS5_iLi0EEES8_S8_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEENS_16__deque_iteratorIyPyRyPS5_iLi0EEES8_S8_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+54

_ZNSt3__25dequeIyNS_9allocatorIyEEE25__maybe_remove_back_spareB8nn210000Eb

NEW

+52

_ZN2pw10containers11size_report15MeasureStdDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_j

NEW

+44

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn210000INS_16__deque_iteratorIyPyRyPS5_iLi0EEES8_TnNS_9enable_ifIXsr23__is_segmented_iteratorIT_EE5valueEiE4typeELi0EEENS_4pairISA_T0_EESA_SA_SE_

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_11__copy_implENS_11__wrap_iterIPyEES4_NS_16__deque_iteratorIyS3_RyPS3_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_11__move_implINS_17_ClassicAlgPolicyEEEPyS4_NS_16__deque_iteratorIyS4_RyPS4_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEEPyS4_NS_16__deque_iteratorIyS4_RyPS4_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

_ZNSt3__28__fill_nB8nn210000INS_16__deque_iteratorIyPyRyPS2_iLi0EEEjyEET_S6_T0_RKT1_

NEW

+40

_ZNSt3__2miB8nn210000ERKNS_16__deque_iteratorIyPKyRS1_PKS2_iLi0EEES8_

NEW

+40

_ZNSt3__2miB8nn210000ERKNS_16__deque_iteratorIyPyRyPS1_iLi0EEES6_

NEW

+38

_ZNSt3__25dequeIyNS_9allocatorIyEEE3endB8nn210000Ev

NEW

+36

_ZNSt3__213move_backwardB8nn210000INS_16__deque_iteratorIyPyRyPS2_iLi0EEES5_EET0_T_S7_S6_

NEW

+36

_ZNSt3__24moveB8nn210000INS_16__deque_iteratorIyPyRyPS2_iLi0EEES5_EET0_T_S7_S6_

NEW

+34

_ZNSt3__25dequeIyNS_9allocatorIyEEE5beginB8nn210000Ev

NEW

+28

_ZNKSt3__25dequeIyNS_9allocatorIyEEE12__back_spareB8nn210000Ev

NEW

+28

_ZNSt3__211__move_implINS_17_ClassicAlgPolicyEE12_MoveSegmentINS_16__deque_iteratorIyPyRyPS5_iLi0EEES8_EclB8nn210000ES5_S5_

NEW

+24

_ZNSt3__213move_backwardB8nn210000IPyNS_16__deque_iteratorIyS1_RyPS1_iLi0EEEEET0_T_S7_S6_

NEW

+24

_ZNSt3__24copyB8nn210000INS_11__wrap_iterIPyEENS_16__deque_iteratorIyS2_RyPS2_iLi0EEEEET0_T_S9_S8_

NEW

+24

_ZNSt3__24moveB8nn210000IPyNS_16__deque_iteratorIyS1_RyPS1_iLi0EEEEET0_T_S7_S6_

NEW

+20

_ZNSt3__210unique_ptrIPyNS_22__allocator_destructorINS_9allocatorIyEEEEE5resetB8nn210000ES1_

NEW

+18

_ZNSt3__222__allocator_destructorINS_9allocatorIyEEEclB8nn210000EPy

NEW

+18

_ZNSt3__29allocatorIPyE8allocateB8nn210000Ej

NEW

+16

_ZNSt3__214__split_bufferIPyNS_9allocatorIS1_EEE17__destruct_at_endB8nn210000EPS1_

NEW

+16

_ZNSt3__26copy_nB8nn210000INS_11__wrap_iterIPyEEiNS_16__deque_iteratorIyS2_RyPS2_iLi0EEETnNS_9enable_ifIXsr37__has_random_access_iterator_categoryIT_EE5valueEiE4typeELi0EEET1_S9_T0_SC_

NEW

+14

_ZNSt3__210unique_ptrIPyNS_22__allocator_destructorINS_9allocatorIyEEEEED2B8nn210000Ev

NEW

+14

_ZNSt3__214__split_bufferIPyRNS_9allocatorIS1_EEE17__destruct_at_endB8nn210000EPS1_

NEW

+12

_ZNSt3__214__split_bufferIPyNS_9allocatorIS1_EEE8pop_backB8nn210000Ev

NEW

+12

_ZNSt3__214__split_bufferIPyRNS_9allocatorIS1_EEE18__construct_at_endINS_13move_iteratorIPS1_EETnNS_9enable_ifIXsr31__has_forward_iterator_categoryIT_EE5valueEiE4typeELi0EEEvSB_SB_

NEW

+12

_ZNSt3__216__deque_iteratorIyPyRyPS1_iLi0EEmIB8nn210000Ei

NEW

+12

_ZNSt3__25dequeIyNS_9allocatorIyEEE6assignINS_11__wrap_iterIPyEETnNS_9enable_ifIXsr37__has_random_access_iterator_categoryIT_EE5valueEiE4typeELi0EEEvS9_S9_

NEW

+10

_ZNKSt3__25dequeIyNS_9allocatorIyEEE19__back_spare_blocksB8nn210000Ev

NEW

+10

_ZNSt3__214__split_bufferIPyRNS_9allocatorIS1_EEE5clearB8nn210000Ev

NEW

+10

_ZNSt3__216__deque_iteratorIyPKyRS1_PKS2_iLi0EEmIB8nn210000Ei

+7,120

RAM

+80

pw::containers::size_report::GetItems<>()::items

NEW

+24

_ZZN2pw10containers11size_report15MeasureStdDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_jE9std_deque

NEW

+4

_ZGVZN2pw10containers11size_report15MeasureStdDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_jE9std_deque

+108

DynamicDeque

FLASH

+240

[section .rodata]

+2

pw::allocator::Layout::Of<>()

+4

pw::containers::size_report::Measure()

NEW

+192

_ZN2pw10containers11size_report12MeasureDequeINS_12DynamicDequeIjtEETpTnRiJENSt3__211__wrap_iterIPjEEEEiRT_T1_SC_j

NEW

+156

pw::containers::internal::GenericDeque<>::erase()

NEW

+132

pw::DynamicDeque<>::ReallocateBuffer()

NEW

+100

_ZN2pw10containers8internal12GenericDequeINS_12DynamicDequeIjtEEjNS1_16CountAndCapacityItEEE10try_assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEbT_SE_

NEW

+100

_ZNSt3__220__uninitialized_moveB8nn210000IjN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEES7_S7_NS_14__always_falseEZNS_18uninitialized_moveB8nn210000IS7_S7_EET0_T_SB_SA_EUlOSB_E_EENS_4pairISA_T2_EESA_T1_SF_T3_T4_

NEW

+98

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn210000IN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIjtEEEESA_SA_EENS_4pairIT_T1_EESC_T0_SD_

NEW

+98

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn210000IN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIjtEEEESA_SA_EENS_4pairIT_T1_EESC_T0_SD_

NEW

+84

_ZNSt3__222__uninitialized_move_nB8nn210000IjN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEEtS7_NS_14__always_falseEZNS_20uninitialized_move_nB8nn210000IS7_tS7_EENS_4pairIT_T1_EESB_T0_SC_EUlOSB_E_EENSA_ISE_T2_EESE_SC_SH_T3_T4_

NEW

+84

pw::DynamicDeque<>::shrink_to_fit()

NEW

+84

pw::containers::internal::GenericDeque<>::ShiftLeft()

NEW

+80

pw::containers::internal::GenericDeque<>::contiguous_data()

NEW

+78

pw::containers::internal::GenericDeque<>::ShiftRight()

NEW

+76

pw::containers::internal::GenericDeque<>::try_resize()

NEW

+74

pw::DynamicDeque<>::try_reserve()

NEW

+68

pw::DynamicDeque<>::IncreaseCapacity()

NEW

+68

pw::containers::internal::GenericDeque<>::insert()

NEW

+66

pw::containers::internal::GenericDeque<>::try_insert()

NEW

+60

_ZN2pw10containers11size_report19MeasureDynamicDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+60

pw::containers::internal::GenericDeque<>::back()

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_11__move_implINS_17_ClassicAlgPolicyEEEN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIjtEEEESA_SA_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISC_SD_EESC_T1_SD_

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEEN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIjtEEEESA_SA_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISC_SD_EESC_T1_SD_

NEW

+54

pw::containers::internal::GenericDeque<>::ShiftForInsert()

NEW

+54

pw::containers::internal::GenericDeque<>::resize()

NEW

+52

pw::containers::internal::GenericDequeBase<>::AbsoluteIndexChecked()

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_back()

NEW

+40

_ZN2pw10containers8internal12GenericDequeINS_12DynamicDequeIjtEEjNS1_16CountAndCapacityItEEE6assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEvT_SE_

NEW

+40

_ZNSt3__222__uninitialized_fill_nB8nn210000IjN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEEtjEET0_S8_T1_RKT2_

NEW

+40

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+40

pw::containers::internal::GenericDeque<>::push_front()

NEW

+40

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

NEW

+36

_ZNSt3__213move_backwardB8nn210000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEES7_EET0_T_S9_S8_

NEW

+36

_ZNSt3__218uninitialized_moveB8nn210000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEES7_EET0_T_S9_S8_

NEW

+36

_ZNSt3__24moveB8nn210000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEES7_EET0_T_S9_S8_

NEW

+36

pw::containers::size_report::MeasureContainer<>()

NEW

+30

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+28

pw::containers::internal::GenericDeque<>::CheckCapacityAdd()

NEW

+28

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+26

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+22

pw::containers::internal::GenericDequeBase<>::PopBack()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

NEW

+20

pw::containers::internal::GenericDequeBase<>::PushFront()

NEW

+16

_ZNSt3__220uninitialized_move_nB8nn210000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEEtS7_EENS_4pairIT_T1_EES9_T0_SA_

NEW

+14

pw::containers::internal::GenericDeque<>::at()

NEW

+12

pw::containers::internal::DequeIterator<>::operator*()

+2,960

RAM

+8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+39

pw::containers::size_report::GetItems<>()::items

NEW

+16

_ZZN2pw10containers11size_report19MeasureDynamicDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_jE13dynamic_deque

NEW

+4

_ZGVZN2pw10containers11size_report19MeasureDynamicDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_jE13dynamic_deque

+68

Additional DynamicDeque with different item type

FLASH

+156

pw::containers::internal::GenericDeque<>::erase()

+148

pw::DynamicDeque<>::ReallocateBuffer()

+84

pw::DynamicDeque<>::shrink_to_fit()

+84

pw::containers::internal::GenericDeque<>::ShiftLeft()

+80

pw::containers::internal::GenericDeque<>::contiguous_data()

+78

pw::containers::internal::GenericDeque<>::ShiftRight()

+76

pw::containers::internal::GenericDeque<>::try_resize()

+74

pw::DynamicDeque<>::try_reserve()

+68

pw::DynamicDeque<>::IncreaseCapacity()

+68

pw::containers::internal::GenericDeque<>::insert()

+66

pw::containers::internal::GenericDeque<>::try_insert()

+60

pw::containers::internal::GenericDeque<>::back()

+54

pw::containers::internal::GenericDeque<>::ShiftForInsert()

+56

pw::containers::internal::GenericDeque<>::resize()

+44

pw::containers::internal::GenericDeque<>::front()

+44

pw::containers::internal::GenericDeque<>::pop_back()

+40

pw::containers::internal::GenericDeque<>::pop_front()

+40

pw::containers::internal::GenericDeque<>::push_back()

+40

pw::containers::internal::GenericDeque<>::push_front()

+46

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

+36

pw::containers::size_report::MeasureContainer<>()

+30

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

+28

pw::containers::internal::GenericDeque<>::CheckCapacityAdd()

+20

pw::containers::size_report::Measure()

+26

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

+14

pw::containers::internal::GenericDeque<>::at()

+12

pw::containers::internal::DequeIterator<>::operator*()

NEW

+200

_ZN2pw10containers11size_report12MeasureDequeINS_12DynamicDequeIytEETpTnRiJENSt3__211__wrap_iterIPyEEEEiRT_T1_SC_j

NEW

+108

_ZN2pw10containers8internal12GenericDequeINS_12DynamicDequeIytEEyNS1_16CountAndCapacityItEEE10try_assignINSt3__211__wrap_iterIPyEETpTnRiJEvEEbT_SE_

NEW

+106

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn210000IN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIytEEEESA_SA_EENS_4pairIT_T1_EESC_T0_SD_

NEW

+104

_ZNSt3__220__uninitialized_moveB8nn210000IyN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEES7_S7_NS_14__always_falseEZNS_18uninitialized_moveB8nn210000IS7_S7_EET0_T_SB_SA_EUlOSB_E_EENS_4pairISA_T2_EESA_T1_SF_T3_T4_

NEW

+102

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn210000IN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIytEEEESA_SA_EENS_4pairIT_T1_EESC_T0_SD_

NEW

+88

_ZNSt3__222__uninitialized_move_nB8nn210000IyN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEEtS7_NS_14__always_falseEZNS_20uninitialized_move_nB8nn210000IS7_tS7_EENS_4pairIT_T1_EESB_T0_SC_EUlOSB_E_EENSA_ISE_T2_EESE_SC_SH_T3_T4_

NEW

+60

_ZN2pw10containers11size_report19MeasureDynamicDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_j

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_11__move_implINS_17_ClassicAlgPolicyEEEN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIytEEEESA_SA_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISC_SD_EESC_T1_SD_

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn210000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEEN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIytEEEESA_SA_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISC_SD_EESC_T1_SD_

NEW

+44

_ZNSt3__222__uninitialized_fill_nB8nn210000IyN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEEtyEET0_S8_T1_RKT2_

NEW

+40

_ZN2pw10containers8internal12GenericDequeINS_12DynamicDequeIytEEyNS1_16CountAndCapacityItEEE6assignINSt3__211__wrap_iterIPyEETpTnRiJEvEEvT_SE_

NEW

+36

_ZNSt3__213move_backwardB8nn210000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEES7_EET0_T_S9_S8_

NEW

+36

_ZNSt3__218uninitialized_moveB8nn210000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEES7_EET0_T_S9_S8_

NEW

+36

_ZNSt3__24moveB8nn210000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEES7_EET0_T_S9_S8_

NEW

+16

_ZNSt3__220uninitialized_move_nB8nn210000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEEtS7_EENS_4pairIT_T1_EES9_T0_SA_

+2,656

RAM

+80

pw::containers::size_report::GetItems<>()::items

NEW

+16

_ZZN2pw10containers11size_report19MeasureDynamicDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_jE13dynamic_deque

NEW

+4

_ZGVZN2pw10containers11size_report19MeasureDynamicDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_jE13dynamic_deque

+100

InlineDeque

FLASH

+188

[section .rodata]

+2

pw::allocator::Layout::Of<>()

+4

pw::containers::size_report::Measure()

-4

__bi_84

NEW

+132

_ZN2pw10containers11size_report18MeasureInlineDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+68

pw::containers::internal::GenericDeque<>::try_resize()

NEW

+60

pw::containers::internal::GenericDeque<>::back()

NEW

+60

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

NEW

+54

pw::containers::internal::GenericDeque<>::resize()

NEW

+46

pw::containers::size_report::MeasureContainer<>()

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_back()

NEW

+42

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+40

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+40

pw::containers::internal::GenericDeque<>::push_front()

NEW

+36

pw::containers::size_report::GetContainer<>()

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS1_20BasicInlineDequeImplIjNS1_16CountAndCapacityItEELj4294967295EEEjS5_E6assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEvT_SE_

NEW

+30

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+26

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+22

pw::containers::internal::GenericDequeBase<>::PopBack()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

NEW

+20

pw::containers::internal::GenericDequeBase<>::PushFront()

+1,048

RAM

+8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+52

pw::containers::size_report::GetContainer<>()::container

NEW

+39

pw::containers::size_report::GetItems<>()::items

+100

Additional InlineDeque with different item type

FLASH

+68

pw::containers::internal::GenericDeque<>::try_resize()

+60

pw::containers::internal::GenericDeque<>::back()

+64

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

+56

pw::containers::internal::GenericDeque<>::resize()

+46

pw::containers::size_report::MeasureContainer<>()

+44

pw::containers::internal::GenericDeque<>::front()

+44

pw::containers::internal::GenericDeque<>::pop_back()

+42

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

+40

pw::containers::internal::GenericDeque<>::pop_front()

+40

pw::containers::internal::GenericDeque<>::push_back()

+40

pw::containers::internal::GenericDeque<>::push_front()

+36

pw::containers::size_report::GetContainer<>()

+20

pw::containers::size_report::Measure()

+26

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

+8

vClearInterruptMaskFromISR

NEW

+132

_ZN2pw10containers11size_report18MeasureInlineDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_j

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS1_20BasicInlineDequeImplIyNS1_16CountAndCapacityItEELj4294967295EEEyS5_E6assignINSt3__211__wrap_iterIPyEETpTnRiJEvEEvT_SE_

+800

RAM

+92

pw::containers::size_report::GetContainer<>()::container

+80

pw::containers::size_report::GetItems<>()::items

+172

InlineQueue

FLASH

+160

[section .rodata]

+2

pw::containers::size_report::SetBaseline()

+4

pw::containers::size_report::Measure()

+2

pw::allocator::LibCAllocator::DoReallocate()

NEW

+86

_ZN2pw10containers11size_report18MeasureInlineQueueIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::size_report::MeasureContainer<>()

NEW

+42

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+40

pw::containers::internal::GenericDeque<>::emplace_back<>()

NEW

+40

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+36

pw::containers::size_report::GetContainer<>()

NEW

+32

pw::containers::internal::BasicInlineQueueImpl<>::emplace_overwrite<>()

NEW

+30

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+26

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

+608

RAM

+8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+52

pw::containers::size_report::GetContainer<>()::container

NEW

+39

pw::containers::size_report::GetItems<>()::items

+100

Additional InlineQueue with different item type

FLASH

-2

pw::containers::size_report::SetBaseline()

+44

pw::containers::internal::GenericDeque<>::front()

+44

pw::containers::size_report::MeasureContainer<>()

+42

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

+40

pw::containers::internal::GenericDeque<>::emplace_back<>()

+40

pw::containers::internal::GenericDeque<>::pop_front()

+36

pw::containers::size_report::GetContainer<>()

+32

pw::containers::internal::BasicInlineQueueImpl<>::emplace_overwrite<>()

+20

pw::containers::size_report::Measure()

+2

pw::containers::internal::GenericDequeBase<>::PopFront()

-2

pw::allocator::LibCAllocator::DoReallocate()

+26

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

+4

vClearInterruptMaskFromISR

NEW

+90

_ZN2pw10containers11size_report18MeasureInlineQueueIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_j

+416

RAM

+92

pw::containers::size_report::GetContainer<>()::container

+80

pw::containers::size_report::GetItems<>()::items

+172

InlineDeque and InlineQueue

FLASH

+200

[section .rodata]

+2

pw::containers::size_report::SetBaseline()

+2

pw::allocator::Layout::Of<>()

+20

pw::containers::size_report::Measure()

NEW

+132

_ZN2pw10containers11size_report18MeasureInlineDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+90

pw::containers::size_report::MeasureContainer<>()

NEW

+86

_ZN2pw10containers11size_report18MeasureInlineQueueIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+72

pw::containers::size_report::GetContainer<>()

NEW

+68

pw::containers::internal::GenericDeque<>::try_resize()

NEW

+60

pw::containers::internal::GenericDeque<>::back()

NEW

+60

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

NEW

+54

pw::containers::internal::GenericDeque<>::resize()

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_back()

NEW

+42

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+40

pw::containers::internal::GenericDeque<>::emplace_back<>()

NEW

+40

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+40

pw::containers::internal::GenericDeque<>::push_front()

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS1_20BasicInlineDequeImplIjNS1_16CountAndCapacityItEELj4294967295EEEjS5_E6assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEvT_SE_

NEW

+32

pw::containers::internal::BasicInlineQueueImpl<>::emplace_overwrite<>()

NEW

+30

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+26

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+22

pw::containers::internal::GenericDequeBase<>::PopBack()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

NEW

+20

pw::containers::internal::GenericDequeBase<>::PushFront()

+1,320

RAM

+8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+104

pw::containers::size_report::GetContainer<>()::container

NEW

+39

pw::containers::size_report::GetItems<>()::items

+152