|
| struct | Aligned_alloc |
| | Aligned allocation routines. More...
|
| |
| struct | Aligned_alloc_ |
| | Small wrapper which utilizes SFINAE to dispatch the call to appropriate aligned allocator implementation. More...
|
| |
| struct | Aligned_alloc_impl |
| |
| struct | Aligned_alloc_metadata |
| | Memory layout representation of metadata segment guaranteed by the inner workings of Aligned_alloc_impl. More...
|
| |
| struct | Aligned_alloc_pfs |
| | Aligned allocation routines which are instrumented through PFS (performance-schema). More...
|
| |
| struct | Aligned_array_deleter |
| |
| struct | Aligned_deleter |
| |
| struct | Alloc |
| | Allocation routines for non-extended alignment types, as opposed to Aligned_alloc for example. More...
|
| |
| struct | Alloc_ |
| | Small wrapper which utilizes SFINAE to dispatch the call to appropriate allocator implementation. More...
|
| |
| struct | Alloc_arr |
| | Specialization of allocation routines for non-extended alignment types but which in comparison to Alloc are providing support for arrays. More...
|
| |
| struct | Alloc_fn |
| | Simple wrapping type around malloc, calloc and friends. More...
|
| |
| struct | Alloc_pfs |
| | Allocation routines for non-extended alignment types, as opposed to Aligned_alloc_pfs for example, but which are instrumented through PFS (performance-schema). More...
|
| |
| struct | allocator_base |
| |
| struct | allocator_base_pfs |
| |
| struct | allocator_traits |
| | Simple allocator traits. More...
|
| |
| struct | Array_deleter |
| |
| class | counting_semaphore_base |
| | A SFINAE helper from which ut::counting_semaphore inherits whole behaviour. More...
|
| |
| class | counting_semaphore_base< T, false > |
| | A specialization to be used on old platforms such as gcc 10.2, which lack support for atomic wait. More...
|
| |
| class | counting_semaphore_base< T, true > |
| | Just like std::counting_semaphore except that: More...
|
| |
| struct | Deleter |
| |
| struct | has_atomic_wait |
| | A SFINAE helper type which has value=true if and only if std::atomic<T> supports wait(T). More...
|
| |
| struct | has_atomic_wait< T, std::void_t< decltype(std::atomic< T >().wait(T{}))> > |
| | A SFINAE specialization which kicks in when std::atomic::wait(T) is implemented. More...
|
| |
| struct | Large_alloc_ |
| | Small wrapper which utilizes SFINAE to dispatch the call to appropriate aligned allocator implementation. More...
|
| |
| struct | Large_page_alloc |
| | Allocation routines which are purposed for allocating memory through the means of what is known as large (huge) pages. More...
|
| |
| struct | Large_page_alloc_pfs |
| | Allocation routines which are purposed for allocating memory through the means of what is known as large (huge) pages. More...
|
| |
| struct | Page_alloc |
| | Allocation routines which are purposed for allocating system page-aligned memory. More...
|
| |
| struct | Page_alloc_ |
| | Small wrapper which utilizes SFINAE to dispatch the call to appropriate aligned allocator implementation. More...
|
| |
| struct | Page_alloc_metadata |
| | Helper struct implementing the type which represents the metadata for all types of page-aligned allocations, be it regular pages or huge-pages. More...
|
| |
| struct | Page_alloc_metadata_pfs |
| | Helper struct implementing the type which represents the metadata for all types of PFS-aware page-aligned allocations, be it regular pages or huge-pages. More...
|
| |
| struct | Page_alloc_pfs |
| | Allocation routines which are purposed for allocating system page-aligned memory. More...
|
| |
| struct | PFS_metadata |
| | Memory layout representation of PFS metadata segment that is used by the allocator variants which also want to trace the memory consumption through PFS (PSI) interface. More...
|
| |
| struct | select_alloc_impl |
| | Simple utility metafunction which selects appropriate allocator variant (implementation) depending on the input parameter(s). More...
|
| |
| struct | select_alloc_impl< true > |
| |
| struct | select_large_page_alloc_impl |
| | Simple utility metafunction which selects appropriate allocator variant (implementation) depending on the input parameter(s). More...
|
| |
| struct | select_large_page_alloc_impl< true > |
| |
| struct | select_malloc_impl |
| | Simple utility metafunction which selects appropriate allocator variant (implementation) depending on the input parameter(s). More...
|
| |
| struct | select_malloc_impl< false, false > |
| |
| struct | select_malloc_impl< false, true > |
| |
| struct | select_malloc_impl< true, Array_specialization > |
| |
| struct | select_page_alloc_impl |
| | Simple utility meta-function which selects appropriate allocator variant (implementation) depending on the input parameter(s). More...
|
| |
| struct | select_page_alloc_impl< true > |
| |
|
| void * | malloc (size_t nbytes) |
| |
| void * | calloc (size_t nbytes) |
| |
| void * | realloc (void *ptr, size_t nbytes) |
| |
| void | free (void *ptr) |
| |
| constexpr size_t | calc_align (size_t n, size_t m) |
| | Calculates the smallest multiple of m that is not smaller than n when m is a power of two. More...
|
| |
| constexpr size_t | pow2_round (size_t n, size_t m) |
| | Calculates the biggest multiple of m that is not bigger than n when m is a power of two. More...
|
| |
| constexpr size_t | round_to_next_multiple (size_t n, size_t m) |
| | Calculates the next multiple of m that is bigger or equal to n. More...
|
| |
| void * | large_page_aligned_alloc (size_t n_bytes) |
| | Allocates memory backed by large (huge) pages. More...
|
| |
| bool | large_page_aligned_free (void *ptr, size_t n_bytes) |
| | Releases memory backed by large (huge) pages. More...
|
| |
| size_t | large_page_size () |
| | Queries the current size of large (huge) pages on running system. More...
|
| |
| std::vector< size_t > | large_page_all_supported_sizes () |
| | Queries all possible page-sizes. More...
|
| |
| void * | page_aligned_alloc (size_t n_bytes) |
| | Allocates system page-aligned memory. More...
|
| |
| bool | page_aligned_free (void *ptr, size_t n_bytes) |
| | Releases system page-aligned storage. More...
|
| |
| template<typename T , typename Tuple , size_t... Args_index_seq> |
| void | construct_impl (void *mem, size_t offset, Tuple &&tuple, std::index_sequence< Args_index_seq... >) |
| |
| template<typename T , typename Tuple > |
| void | construct (void *mem, size_t offset, Tuple &&tuple) |
| |
| constexpr uint64_t | multiply_uint64_portable (uint64_t x, uint64_t y, uint64_t &hi) |
| | Calculates the 128bit result of multiplication of the two specified 64bit integers. More...
|
| |
| constexpr uint32_t | hash_uint32_pair_ib (uint32_t n1, uint32_t n2) |
| | A helper method, it is used by hash_binary_ib for backward compatibility. More...
|
| |
| static int64_t | read_from_1 (const byte *addr) |
| |
| static int64_t | read_from_2 (const byte *addr) |
| |
| static int64_t | read_from_4 (const byte *addr) |
| |
| static int64_t | read_from_8 (const byte *addr) |
| |
| std::array< std::array< uint64_t, 8 >, 256 > ut::detail::tab_hash_lookup_table |
Table for Tabulation Hashing, precomputed hash values for all byte values.
The table could be for different amount of bits per chunk than 8, but 8 seems to yield faster hash calculation than 4 or 16bits - 4bits require 16 XOR operations and sets of bit manipulations, while 16bit require bigger tables that slow down caches. The indexes are set such that hash values for a specific byte value are stored in the same cache line (8 values * 8 bytes = 64B). This way it should be much faster and less demanding on CPU caches to calculate results for small integers (where most bytes are 0).