File tree Expand file tree Collapse file tree 6 files changed +27
-6
lines changed Expand file tree Collapse file tree 6 files changed +27
-6
lines changed Original file line number Diff line number Diff line change @@ -169,6 +169,19 @@ if(CONST_QUALIFIED_MALLOC_USABLE_SIZE)
169169endif ()
170170
171171
172+ # Build a redirection layer for all sizes that are a multiple of
173+ # 16bytes up to 1024.
174+ add_executable (generate src/redirect/generate.cc)
175+ target_link_libraries (generate snmalloc_lib)
176+ add_custom_target (generated ALL
177+ COMMAND generate ${CMAKE_CURRENT_BINARY_DIR} /generated .cc
178+ BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR} /generated .cc
179+ )
180+ add_library (redirect_small STATIC src/redirect/redirect.cc)
181+ target_link_libraries (redirect_small snmalloc_lib)
182+ target_include_directories (redirect_small PRIVATE ${CMAKE_CURRENT_BINARY_DIR} )
183+
184+
172185# To build with just the header library target define SNMALLOC_ONLY_HEADER_LIBRARY
173186# in containing Cmake file.
174187if (NOT DEFINED SNMALLOC_ONLY_HEADER_LIBRARY)
Original file line number Diff line number Diff line change @@ -1250,7 +1250,6 @@ namespace snmalloc
12501250 small_dealloc_offseted_slow (super, p, slab->get_meta ().sizeclass );
12511251 }
12521252
1253-
12541253 SNMALLOC_FAST_PATH void small_dealloc_offseted_inner (
12551254 Superslab* super, void * p, sizeclass_t sizeclass)
12561255 {
Original file line number Diff line number Diff line change @@ -20,7 +20,8 @@ namespace snmalloc
2020 constexpr static size_t
2121 sizeclass_to_inverse_cache_friendly_mask (sizeclass_t sc);
2222 constexpr static uint16_t medium_slab_free (sizeclass_t sizeclass);
23- template <bool ASSUME_SMALL = false > static sizeclass_t size_to_sizeclass (size_t size);
23+ template <bool ASSUME_SMALL = false >
24+ static sizeclass_t size_to_sizeclass (size_t size);
2425
2526 constexpr static inline sizeclass_t size_to_sizeclass_const (size_t size)
2627 {
Original file line number Diff line number Diff line change @@ -110,7 +110,7 @@ namespace snmalloc
110110 return sizeclass_metadata.inverse_cache_friendly_mask [sizeclass];
111111 }
112112
113- template <bool ASSUME_SMALL>
113+ template <bool ASSUME_SMALL>
114114 static inline sizeclass_t size_to_sizeclass (size_t size)
115115 {
116116 if ((size - 1 ) <= (SLAB_SIZE - 1 ) || ASSUME_SMALL)
Original file line number Diff line number Diff line change @@ -72,14 +72,16 @@ extern "C"
7272 SNMALLOC_EXPORT
7373 void SNMALLOC_NAME_MANGLE (free_local_small)(void * ptr)
7474 {
75- if (Alloc::small_local_dealloc (ptr)) return ;
75+ if (Alloc::small_local_dealloc (ptr))
76+ return ;
7677 ThreadAlloc::get_noncachable ()->small_local_dealloc_slow (ptr);
7778 }
7879
7980 SNMALLOC_EXPORT
8081 void * SNMALLOC_NAME_MANGLE (malloc_small)(size_t size)
8182 {
82- return ThreadAlloc::get_noncachable ()->small_alloc <NoZero, YesReserve>(size);
83+ return ThreadAlloc::get_noncachable ()->small_alloc <NoZero, YesReserve>(
84+ size);
8385 }
8486
8587 SNMALLOC_EXPORT
@@ -88,6 +90,12 @@ extern "C"
8890 return ThreadAlloc::get_noncachable ()->small_alloc <NoZero, YesReserve>(64 );
8991 }
9092
93+ SNMALLOC_EXPORT
94+ void * SNMALLOC_NAME_MANGLE (malloc_small_63)()
95+ {
96+ return ThreadAlloc::get_noncachable ()->small_alloc <NoZero, YesReserve>(63 );
97+ }
98+
9199 SNMALLOC_EXPORT
92100 size_t SNMALLOC_NAME_MANGLE (malloc_usable_size)(
93101 MALLOC_USABLE_SIZE_QUALIFIER void * ptr)
Original file line number Diff line number Diff line change @@ -131,7 +131,7 @@ int main(int argc, char** argv)
131131
132132 constexpr int SUCCESS = 0 ;
133133
134- for (size_t i = 1 ; i < SLAB_SIZE; i+= 16 )
134+ for (size_t i = 1 ; i < SLAB_SIZE; i += 16 )
135135 {
136136 test_local (i);
137137 }
You can’t perform that action at this time.
0 commit comments