mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-14 06:59:10 +00:00
Add dontthrow
attribute to most libc functions
This will help C++ code that uses exceptions to be tinier. For example, this change shaves away 1000 lines of assembly code from LLVM's libcxx, which is 0.7% of all assembly instructions in the entire library.
This commit is contained in:
parent
cb19e172da
commit
eeb20775d2
103 changed files with 1455 additions and 1456 deletions
|
@ -3,12 +3,11 @@
|
|||
COSMOPOLITAN_C_START_
|
||||
|
||||
void *bsearch(const void *, const void *, size_t, size_t,
|
||||
int (*)(const void *, const void *))
|
||||
paramsnonnull() dontthrow nosideeffect;
|
||||
int (*)(const void *, const void *)) paramsnonnull() nosideeffect;
|
||||
void *bsearch_r(const void *, const void *, size_t, size_t,
|
||||
int (*)(const void *, const void *, void *), void *)
|
||||
paramsnonnull((1, 2, 5)) dontthrow nosideeffect;
|
||||
void djbsort(int32_t *, size_t);
|
||||
paramsnonnull((1, 2, 5)) nosideeffect;
|
||||
void djbsort(int32_t *, size_t) libcesque;
|
||||
void qsort3(void *, size_t, size_t, int (*)(const void *, const void *))
|
||||
paramsnonnull();
|
||||
void qsort(void *, size_t, size_t, int (*)(const void *, const void *))
|
||||
|
@ -26,10 +25,8 @@ int mergesort(void *, size_t, size_t, int (*)(const void *, const void *));
|
|||
int mergesort_r(void *, size_t, size_t,
|
||||
int (*)(const void *, const void *, void *), void *);
|
||||
|
||||
#define __algalloc returnspointerwithnoaliases dontthrow nocallback __wur
|
||||
|
||||
int radix_sort_int32(int32_t *, size_t);
|
||||
int radix_sort_int64(int64_t *, size_t);
|
||||
int radix_sort_int32(int32_t *, size_t) libcesque;
|
||||
int radix_sort_int64(int64_t *, size_t) libcesque;
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* COSMOPOLITAN_LIBC_ALG_ALG_H_ */
|
||||
|
|
|
@ -11,15 +11,15 @@ struct critbit0 {
|
|||
size_t count;
|
||||
};
|
||||
|
||||
bool critbit0_contains(struct critbit0 *, const char *) dontthrow nosideeffect
|
||||
bool critbit0_contains(struct critbit0 *, const char *) libcesque nosideeffect
|
||||
paramsnonnull();
|
||||
int critbit0_insert(struct critbit0 *, const char *) paramsnonnull();
|
||||
bool critbit0_delete(struct critbit0 *, const char *) dontthrow paramsnonnull();
|
||||
void critbit0_clear(struct critbit0 *) dontthrow paramsnonnull();
|
||||
bool critbit0_delete(struct critbit0 *, const char *) libcesque paramsnonnull();
|
||||
void critbit0_clear(struct critbit0 *) libcesque paramsnonnull();
|
||||
char *critbit0_get(struct critbit0 *, const char *);
|
||||
intptr_t critbit0_allprefixed(struct critbit0 *, const char *,
|
||||
intptr_t (*)(const char *, void *), void *)
|
||||
paramsnonnull((1, 2, 3)) dontthrow;
|
||||
paramsnonnull((1, 2, 3)) libcesque;
|
||||
int critbit0_emplace(struct critbit0 *, const void *, size_t) paramsnonnull();
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
#ifdef _COSMO_SOURCE
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
void _gc_free(void *) libcesque;
|
||||
void __defer(void *, void *, void *) libcesque;
|
||||
void gclongjmp(void *, int) libcesque wontreturn;
|
||||
libcesque void _gc_free(void *);
|
||||
libcesque void __defer(void *, void *, void *);
|
||||
libcesque void gclongjmp(void *, int) wontreturn;
|
||||
#define gc(THING) defer((void *)_gc_free, (void *)(THING))
|
||||
#define _gc(THING) defer((void *)_gc_free, (void *)(THING))
|
||||
#define defer(FN, ARG) \
|
||||
|
|
|
@ -8,7 +8,7 @@ struct CritbitNode {
|
|||
unsigned otherbits;
|
||||
};
|
||||
|
||||
int __putenv(char *, bool);
|
||||
int __putenv(char *, bool) libcesque;
|
||||
bool __grow(void *, size_t *, size_t, size_t) paramsnonnull((1, 2)) libcesque;
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
|
|
|
@ -24,14 +24,14 @@ char *strdup(const char *) paramsnonnull() mallocesque;
|
|||
char *strndup(const char *, size_t) paramsnonnull() mallocesque;
|
||||
void *aligned_alloc(size_t, size_t) attributeallocalign((1))
|
||||
attributeallocsize((2)) returnspointerwithnoaliases libcesque __wur;
|
||||
int posix_memalign(void **, size_t, size_t);
|
||||
int posix_memalign(void **, size_t, size_t) libcesque;
|
||||
|
||||
int mallopt(int, int);
|
||||
int malloc_trim(size_t);
|
||||
size_t bulk_free(void **, size_t);
|
||||
size_t malloc_usable_size(void *);
|
||||
void **independent_calloc(size_t, size_t, void **);
|
||||
void **independent_comalloc(size_t, size_t *, void **);
|
||||
int mallopt(int, int) libcesque;
|
||||
int malloc_trim(size_t) libcesque;
|
||||
size_t bulk_free(void **, size_t) libcesque;
|
||||
size_t malloc_usable_size(void *) libcesque;
|
||||
void **independent_calloc(size_t, size_t, void **) libcesque;
|
||||
void **independent_comalloc(size_t, size_t *, void **) libcesque;
|
||||
|
||||
wchar_t *wcsdup(const wchar_t *) strlenesque __wur;
|
||||
|
||||
|
@ -48,12 +48,12 @@ struct mallinfo {
|
|||
size_t keepcost; /* releasable (via malloc_trim) space */
|
||||
};
|
||||
|
||||
struct mallinfo mallinfo(void);
|
||||
struct mallinfo mallinfo(void) libcesque;
|
||||
|
||||
size_t malloc_footprint(void);
|
||||
size_t malloc_max_footprint(void);
|
||||
size_t malloc_footprint_limit(void);
|
||||
size_t malloc_set_footprint_limit(size_t);
|
||||
size_t malloc_footprint(void) libcesque;
|
||||
size_t malloc_max_footprint(void) libcesque;
|
||||
size_t malloc_footprint_limit(void) libcesque;
|
||||
size_t malloc_set_footprint_limit(size_t) libcesque;
|
||||
void malloc_inspect_all(void (*)(void *, void *, size_t, void *), void *);
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
|
|
|
@ -8,10 +8,10 @@ struct SortedInts {
|
|||
int *p;
|
||||
};
|
||||
|
||||
bool ContainsInt(const struct SortedInts *, int);
|
||||
bool InsertInt(struct SortedInts *, int, bool);
|
||||
int CountInt(const struct SortedInts *, int);
|
||||
int LeftmostInt(const struct SortedInts *, int);
|
||||
bool ContainsInt(const struct SortedInts *, int) libcesque;
|
||||
bool InsertInt(struct SortedInts *, int, bool) libcesque;
|
||||
int CountInt(const struct SortedInts *, int) libcesque;
|
||||
int LeftmostInt(const struct SortedInts *, int) libcesque;
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* COSMOPOLITAN_LIBC_MEM_SORTEDINTS_INTERNAL_H_ */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue