Skip to content

Commit 59ac285

Browse files
authored
Merge pull request #159 from devnexen/using_flatten_cpp
using flatten attribute on most of public interface.
2 parents 5f227d4 + 824a336 commit 59ac285

2 files changed

Lines changed: 49 additions & 49 deletions

File tree

src/iso_alloc.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,43 +26,43 @@ extern "C" __attribute__((constructor(FIRST_CTOR + 1))) void iso_cpp(void) {
2626
// These hooks override the basic new/delete
2727
// operators to use the iso_alloc API
2828

29-
EXTERNAL_API void *operator new(size_t size) NEW_EXCEPT {
29+
EXTERNAL_API FLATTEN void *operator new(size_t size) NEW_EXCEPT {
3030
return iso_alloc(size);
3131
}
3232

33-
EXTERNAL_API void operator delete(void *p) noexcept {
33+
EXTERNAL_API FLATTEN void operator delete(void *p) noexcept {
3434
iso_free(p);
3535
}
3636

37-
EXTERNAL_API void *operator new[](size_t size) NEW_EXCEPT {
37+
EXTERNAL_API FLATTEN void *operator new[](size_t size) NEW_EXCEPT {
3838
return iso_alloc(size);
3939
}
4040

41-
EXTERNAL_API void operator delete[](void *p) noexcept {
41+
EXTERNAL_API FLATTEN void operator delete[](void *p) noexcept {
4242
iso_free(p);
4343
}
4444

45-
EXTERNAL_API void *operator new(size_t size, const std::nothrow_t &) noexcept {
45+
EXTERNAL_API FLATTEN void *operator new(size_t size, const std::nothrow_t &) noexcept {
4646
return iso_alloc(size);
4747
}
4848

49-
EXTERNAL_API void *operator new[](size_t size, const std::nothrow_t &) noexcept {
49+
EXTERNAL_API FLATTEN void *operator new[](size_t size, const std::nothrow_t &) noexcept {
5050
return iso_alloc(size);
5151
}
5252

53-
void operator delete(void *ptr, size_t size) noexcept {
53+
FLATTEN void operator delete(void *ptr, size_t size) noexcept {
5454
return iso_free_size(ptr, size);
5555
}
5656

57-
void operator delete[](void *ptr, size_t size) noexcept {
57+
FLATTEN void operator delete[](void *ptr, size_t size) noexcept {
5858
return iso_free_size(ptr, size);
5959
}
6060

61-
EXTERNAL_API void operator delete(void *ptr, const std::nothrow_t &) noexcept {
61+
EXTERNAL_API FLATTEN void operator delete(void *ptr, const std::nothrow_t &) noexcept {
6262
return iso_free(ptr);
6363
}
6464

65-
EXTERNAL_API void operator delete[](void *ptr, const std::nothrow_t &) noexcept {
65+
EXTERNAL_API FLATTEN void operator delete[](void *ptr, const std::nothrow_t &) noexcept {
6666
return iso_free(ptr);
6767
}
6868

src/iso_alloc_interfaces.c

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,49 +10,49 @@
1010
#include "iso_alloc_profiler.h"
1111
#endif
1212

13-
EXTERNAL_API void iso_alloc_initialize(void) {
13+
EXTERNAL_API FLATTEN void iso_alloc_initialize(void) {
1414
_iso_alloc_initialize();
1515
}
1616

17-
EXTERNAL_API void iso_alloc_destroy(void) {
17+
EXTERNAL_API FLATTEN void iso_alloc_destroy(void) {
1818
_iso_alloc_destroy();
1919
}
2020

21-
EXTERNAL_API NO_DISCARD MALLOC_ATTR ALLOC_SIZE ASSUME_ALIGNED void *iso_alloc(size_t size) {
21+
EXTERNAL_API NO_DISCARD FLATTEN MALLOC_ATTR ALLOC_SIZE ASSUME_ALIGNED void *iso_alloc(size_t size) {
2222
return _iso_alloc(NULL, size);
2323
}
2424

25-
EXTERNAL_API NO_DISCARD MALLOC_ATTR CALLOC_SIZE ASSUME_ALIGNED void *iso_calloc(size_t nmemb, size_t size) {
25+
EXTERNAL_API NO_DISCARD FLATTEN MALLOC_ATTR CALLOC_SIZE ASSUME_ALIGNED void *iso_calloc(size_t nmemb, size_t size) {
2626
return _iso_calloc(nmemb, size);
2727
}
2828

29-
EXTERNAL_API void iso_free(void *p) {
29+
EXTERNAL_API FLATTEN void iso_free(void *p) {
3030
_iso_free(p, false);
3131
}
3232

33-
EXTERNAL_API void iso_free_size(void *p, size_t size) {
33+
EXTERNAL_API FLATTEN void iso_free_size(void *p, size_t size) {
3434
_iso_free_size(p, size);
3535
}
3636

37-
EXTERNAL_API void iso_free_from_zone(void *p, iso_alloc_zone_handle *zone) {
37+
EXTERNAL_API FLATTEN void iso_free_from_zone(void *p, iso_alloc_zone_handle *zone) {
3838
UNMASK_ZONE_HANDLE(zone);
3939
_iso_free_from_zone(p, zone, false);
4040
}
4141

42-
EXTERNAL_API void iso_free_from_zone_permanently(void *p, iso_alloc_zone_handle *zone) {
42+
EXTERNAL_API FLATTEN void iso_free_from_zone_permanently(void *p, iso_alloc_zone_handle *zone) {
4343
UNMASK_ZONE_HANDLE(zone);
4444
_iso_free_from_zone(p, zone, true);
4545
}
4646

47-
EXTERNAL_API void iso_free_permanently(void *p) {
47+
EXTERNAL_API FLATTEN void iso_free_permanently(void *p) {
4848
_iso_free(p, true);
4949
}
5050

51-
EXTERNAL_API size_t iso_chunksz(void *p) {
51+
EXTERNAL_API FLATTEN size_t iso_chunksz(void *p) {
5252
return _iso_chunk_size(p);
5353
}
5454

55-
EXTERNAL_API NO_DISCARD size_t iso_zone_chunk_count(iso_alloc_zone_handle *zone) {
55+
EXTERNAL_API FLATTEN NO_DISCARD size_t iso_zone_chunk_count(iso_alloc_zone_handle *zone) {
5656
UNMASK_ZONE_HANDLE(zone);
5757
iso_alloc_zone_t *_zone = (iso_alloc_zone_t *) zone;
5858
size_t canaries = 0;
@@ -63,7 +63,7 @@ EXTERNAL_API NO_DISCARD size_t iso_zone_chunk_count(iso_alloc_zone_handle *zone)
6363
return (_zone->chunk_count - canaries);
6464
}
6565

66-
EXTERNAL_API NO_DISCARD REALLOC_SIZE ASSUME_ALIGNED void *iso_realloc(void *p, size_t size) {
66+
EXTERNAL_API FLATTEN NO_DISCARD REALLOC_SIZE ASSUME_ALIGNED void *iso_realloc(void *p, size_t size) {
6767
if(size == 0) {
6868
iso_free(p);
6969
return NULL;
@@ -94,7 +94,7 @@ EXTERNAL_API NO_DISCARD REALLOC_SIZE ASSUME_ALIGNED void *iso_realloc(void *p, s
9494
return r;
9595
}
9696

97-
EXTERNAL_API NO_DISCARD MALLOC_ATTR REALLOC_SIZE ASSUME_ALIGNED void *iso_reallocarray(void *p, size_t nmemb, size_t size) {
97+
EXTERNAL_API FLATTEN NO_DISCARD MALLOC_ATTR REALLOC_SIZE ASSUME_ALIGNED void *iso_reallocarray(void *p, size_t nmemb, size_t size) {
9898
unsigned int res;
9999

100100
if(__builtin_umul_overflow(nmemb, size, &res)) {
@@ -104,11 +104,11 @@ EXTERNAL_API NO_DISCARD MALLOC_ATTR REALLOC_SIZE ASSUME_ALIGNED void *iso_reallo
104104
return iso_realloc(p, nmemb * size);
105105
}
106106

107-
EXTERNAL_API NO_DISCARD ASSUME_ALIGNED char *iso_strdup(const char *str) {
107+
EXTERNAL_API FLATTEN NO_DISCARD ASSUME_ALIGNED char *iso_strdup(const char *str) {
108108
return iso_strdup_from_zone(NULL, str);
109109
}
110110

111-
EXTERNAL_API NO_DISCARD ASSUME_ALIGNED char *iso_strdup_from_zone(iso_alloc_zone_handle *zone, const char *str) {
111+
EXTERNAL_API FLATTEN NO_DISCARD ASSUME_ALIGNED char *iso_strdup_from_zone(iso_alloc_zone_handle *zone, const char *str) {
112112
if(str == NULL) {
113113
return NULL;
114114
}
@@ -129,11 +129,11 @@ EXTERNAL_API NO_DISCARD ASSUME_ALIGNED char *iso_strdup_from_zone(iso_alloc_zone
129129
return p;
130130
}
131131

132-
EXTERNAL_API NO_DISCARD ASSUME_ALIGNED char *iso_strndup(const char *str, size_t n) {
132+
EXTERNAL_API FLATTEN NO_DISCARD ASSUME_ALIGNED char *iso_strndup(const char *str, size_t n) {
133133
return iso_strndup_from_zone(NULL, str, n);
134134
}
135135

136-
EXTERNAL_API NO_DISCARD ASSUME_ALIGNED char *iso_strndup_from_zone(iso_alloc_zone_handle *zone, const char *str, size_t n) {
136+
EXTERNAL_API FLATTEN NO_DISCARD ASSUME_ALIGNED char *iso_strndup_from_zone(iso_alloc_zone_handle *zone, const char *str, size_t n) {
137137
if(str == NULL) {
138138
return NULL;
139139
}
@@ -160,7 +160,7 @@ EXTERNAL_API NO_DISCARD ASSUME_ALIGNED char *iso_strndup_from_zone(iso_alloc_zon
160160
return p;
161161
}
162162

163-
EXTERNAL_API NO_DISCARD MALLOC_ATTR ASSUME_ALIGNED void *iso_alloc_from_zone(iso_alloc_zone_handle *zone) {
163+
EXTERNAL_API FLATTEN NO_DISCARD MALLOC_ATTR ASSUME_ALIGNED void *iso_alloc_from_zone(iso_alloc_zone_handle *zone) {
164164
if(zone == NULL) {
165165
return NULL;
166166
}
@@ -171,7 +171,7 @@ EXTERNAL_API NO_DISCARD MALLOC_ATTR ASSUME_ALIGNED void *iso_alloc_from_zone(iso
171171
return _iso_alloc(zone, _zone->chunk_size);
172172
}
173173

174-
EXTERNAL_API NO_DISCARD MALLOC_ATTR void *iso_alloc_from_zone_tagged(iso_alloc_zone_handle *zone) {
174+
EXTERNAL_API FLATTEN NO_DISCARD MALLOC_ATTR void *iso_alloc_from_zone_tagged(iso_alloc_zone_handle *zone) {
175175
if(zone == NULL) {
176176
return NULL;
177177
}
@@ -183,7 +183,7 @@ EXTERNAL_API NO_DISCARD MALLOC_ATTR void *iso_alloc_from_zone_tagged(iso_alloc_z
183183
return _tag_ptr(p, zone);
184184
}
185185

186-
EXTERNAL_API NO_DISCARD void *iso_alloc_tag_ptr(void *p, iso_alloc_zone_handle *zone) {
186+
EXTERNAL_API FLATTEN NO_DISCARD void *iso_alloc_tag_ptr(void *p, iso_alloc_zone_handle *zone) {
187187
if(zone == NULL) {
188188
return NULL;
189189
}
@@ -192,7 +192,7 @@ EXTERNAL_API NO_DISCARD void *iso_alloc_tag_ptr(void *p, iso_alloc_zone_handle *
192192
return _tag_ptr(p, zone);
193193
}
194194

195-
EXTERNAL_API NO_DISCARD void *iso_alloc_untag_ptr(void *p, iso_alloc_zone_handle *zone) {
195+
EXTERNAL_API FLATTEN NO_DISCARD void *iso_alloc_untag_ptr(void *p, iso_alloc_zone_handle *zone) {
196196
if(zone == NULL) {
197197
return NULL;
198198
}
@@ -201,7 +201,7 @@ EXTERNAL_API NO_DISCARD void *iso_alloc_untag_ptr(void *p, iso_alloc_zone_handle
201201
return _untag_ptr(p, zone);
202202
}
203203

204-
EXTERNAL_API void iso_alloc_verify_ptr_tag(void *p, iso_alloc_zone_handle *zone) {
204+
EXTERNAL_API FLATTEN void iso_alloc_verify_ptr_tag(void *p, iso_alloc_zone_handle *zone) {
205205
if(zone == NULL) {
206206
return;
207207
}
@@ -211,7 +211,7 @@ EXTERNAL_API void iso_alloc_verify_ptr_tag(void *p, iso_alloc_zone_handle *zone)
211211
return;
212212
}
213213

214-
EXTERNAL_API NO_DISCARD uint8_t iso_alloc_get_mem_tag(void *p, iso_alloc_zone_handle *zone) {
214+
EXTERNAL_API FLATTEN NO_DISCARD uint8_t iso_alloc_get_mem_tag(void *p, iso_alloc_zone_handle *zone) {
215215
if(zone == NULL || p == NULL) {
216216
return 0;
217217
}
@@ -220,7 +220,7 @@ EXTERNAL_API NO_DISCARD uint8_t iso_alloc_get_mem_tag(void *p, iso_alloc_zone_ha
220220
return _iso_alloc_get_mem_tag(p, zone);
221221
}
222222

223-
EXTERNAL_API void iso_alloc_destroy_zone(iso_alloc_zone_handle *zone) {
223+
EXTERNAL_API FLATTEN void iso_alloc_destroy_zone(iso_alloc_zone_handle *zone) {
224224
if(zone == NULL) {
225225
return;
226226
}
@@ -229,13 +229,13 @@ EXTERNAL_API void iso_alloc_destroy_zone(iso_alloc_zone_handle *zone) {
229229
_iso_alloc_destroy_zone(zone);
230230
}
231231

232-
EXTERNAL_API NO_DISCARD iso_alloc_zone_handle *iso_alloc_new_zone(size_t size) {
232+
EXTERNAL_API FLATTEN NO_DISCARD iso_alloc_zone_handle *iso_alloc_new_zone(size_t size) {
233233
iso_alloc_zone_handle *zone = (iso_alloc_zone_handle *) iso_new_zone(size, false);
234234
UNMASK_ZONE_HANDLE(zone);
235235
return zone;
236236
}
237237

238-
EXTERNAL_API int32_t iso_alloc_name_zone(iso_alloc_zone_handle *zone, char *name) {
238+
EXTERNAL_API FLATTEN int32_t iso_alloc_name_zone(iso_alloc_zone_handle *zone, char *name) {
239239
if(zone == NULL) {
240240
return 0;
241241
} else {
@@ -246,15 +246,15 @@ EXTERNAL_API int32_t iso_alloc_name_zone(iso_alloc_zone_handle *zone, char *name
246246
return name_mapping(_zone->user_pages_start, ZONE_USER_SIZE, name);
247247
}
248248

249-
EXTERNAL_API void iso_alloc_protect_root(void) {
249+
EXTERNAL_API FLATTEN void iso_alloc_protect_root(void) {
250250
_iso_alloc_protect_root();
251251
}
252252

253-
EXTERNAL_API void iso_alloc_unprotect_root(void) {
253+
EXTERNAL_API FLATTEN void iso_alloc_unprotect_root(void) {
254254
_iso_alloc_unprotect_root();
255255
}
256256

257-
EXTERNAL_API uint64_t iso_alloc_detect_zone_leaks(iso_alloc_zone_handle *zone) {
257+
EXTERNAL_API FLATTEN uint64_t iso_alloc_detect_zone_leaks(iso_alloc_zone_handle *zone) {
258258
if(zone == NULL) {
259259
return 0;
260260
} else {
@@ -264,11 +264,11 @@ EXTERNAL_API uint64_t iso_alloc_detect_zone_leaks(iso_alloc_zone_handle *zone) {
264264
return _iso_alloc_detect_leaks_in_zone(zone);
265265
}
266266

267-
EXTERNAL_API uint64_t iso_alloc_detect_leaks(void) {
267+
EXTERNAL_API FLATTEN uint64_t iso_alloc_detect_leaks(void) {
268268
return _iso_alloc_detect_leaks();
269269
}
270270

271-
EXTERNAL_API uint64_t iso_alloc_zone_mem_usage(iso_alloc_zone_handle *zone) {
271+
EXTERNAL_API FLATTEN uint64_t iso_alloc_zone_mem_usage(iso_alloc_zone_handle *zone) {
272272
if(zone == NULL) {
273273
return 0;
274274
} else {
@@ -278,15 +278,15 @@ EXTERNAL_API uint64_t iso_alloc_zone_mem_usage(iso_alloc_zone_handle *zone) {
278278
return _iso_alloc_zone_mem_usage(zone);
279279
}
280280

281-
EXTERNAL_API uint64_t iso_alloc_mem_usage(void) {
281+
EXTERNAL_API FLATTEN uint64_t iso_alloc_mem_usage(void) {
282282
return _iso_alloc_mem_usage();
283283
}
284284

285-
EXTERNAL_API void iso_verify_zones(void) {
285+
EXTERNAL_API FLATTEN void iso_verify_zones(void) {
286286
verify_all_zones();
287287
}
288288

289-
EXTERNAL_API void iso_verify_zone(iso_alloc_zone_handle *zone) {
289+
EXTERNAL_API FLATTEN void iso_verify_zone(iso_alloc_zone_handle *zone) {
290290
if(zone == NULL) {
291291
return;
292292
} else {
@@ -296,26 +296,26 @@ EXTERNAL_API void iso_verify_zone(iso_alloc_zone_handle *zone) {
296296
verify_zone(zone);
297297
}
298298

299-
EXTERNAL_API void iso_flush_caches(void) {
299+
EXTERNAL_API FLATTEN void iso_flush_caches(void) {
300300
flush_caches();
301301
}
302302

303303
#if HEAP_PROFILER
304-
EXTERNAL_API size_t iso_get_alloc_traces(iso_alloc_traces_t *traces_out) {
304+
EXTERNAL_API FLATTEN size_t iso_get_alloc_traces(iso_alloc_traces_t *traces_out) {
305305
return _iso_get_alloc_traces(traces_out);
306306
}
307307

308-
EXTERNAL_API size_t iso_get_free_traces(iso_free_traces_t *traces_out) {
308+
EXTERNAL_API FLATTEN size_t iso_get_free_traces(iso_free_traces_t *traces_out) {
309309
return _iso_get_free_traces(traces_out);
310310
}
311311

312-
EXTERNAL_API void iso_alloc_reset_traces(void) {
312+
EXTERNAL_API FLATTEN void iso_alloc_reset_traces(void) {
313313
_iso_alloc_reset_traces();
314314
}
315315
#endif
316316

317317
#if EXPERIMENTAL
318-
EXTERNAL_API void iso_alloc_search_stack(void *p) {
318+
EXTERNAL_API FLATTEN void iso_alloc_search_stack(void *p) {
319319
_iso_alloc_search_stack(p);
320320
}
321321
#endif

0 commit comments

Comments
 (0)