Index: src/crc32.h ================================================================== --- src/crc32.h +++ src/crc32.h @@ -24,9 +24,10 @@ #import "macros.h" #ifdef __cplusplus extern "C" { #endif -extern uint32_t of_crc32(uint32_t crc, unsigned char *bytes, size_t length); +extern uint32_t of_crc32(uint32_t crc, unsigned char *_Nonnull bytes, + size_t length); #ifdef __cplusplus } #endif Index: src/runtime/runtime-private.h ================================================================== --- src/runtime/runtime-private.h +++ src/runtime/runtime-private.h @@ -17,146 +17,155 @@ #include "config.h" #include "platform.h" struct objc_abi_class { - struct objc_abi_class *metaclass; - const char *superclass; - const char *name; + struct objc_abi_class *_Nonnull metaclass; + const char *_Nullable superclass; + const char *_Nonnull name; unsigned long version; unsigned long info; long instance_size; - void *ivars; - struct objc_abi_method_list *methodlist; - void *dtable; - void *subclass_list; - void *sibling_class; - void *protocols; - void *gc_object_type; + void *_Nullable ivars; + struct objc_abi_method_list *_Nullable methodlist; + void *_Nullable dtable; + void *_Nullable subclass_list; + void *_Nullable sibling_class; + void *_Nullable protocols; + void *_Nullable gc_object_type; long abi_version; - int32_t **ivar_offsets; - void *properties; + int32_t *_Nonnull *_Nullable ivar_offsets; + void *_Nullable properties; +}; + +struct objc_abi_selector { + const char *_Nonnull name; + const char *_Nullable types; }; struct objc_abi_method { - const char *name; - const char *types; - IMP imp; + struct objc_abi_selector sel; + IMP _Nonnull imp; }; struct objc_abi_method_list { - struct objc_abi_method_list *next; + struct objc_abi_method_list *_Nullable next; unsigned int count; struct objc_abi_method methods[1]; }; -struct objc_abi_selector { - const char *name; - const char *types; -}; - struct objc_abi_category { - const char *category_name; - const char *class_name; - struct objc_abi_method_list *instance_methods; - struct objc_abi_method_list *class_methods; - struct objc_protocol_list *protocols; + const char *_Nonnull category_name; + const char *_Nonnull class_name; + struct objc_abi_method_list *_Nullable instance_methods; + struct objc_abi_method_list *_Nullable class_methods; + struct objc_protocol_list *_Nullable protocols; }; struct objc_abi_method_description { - const char *name; - const char *types; + const char *_Nonnull name; + const char *_Nonnull types; }; struct objc_abi_method_description_list { int count; struct objc_abi_method_description list[1]; }; struct objc_abi_static_instances { - const char *class_name; - id instances[1]; + const char *_Nonnull class_name; + id _Nullable instances[1]; }; struct objc_abi_symtab { unsigned long unknown; - struct objc_abi_selector *sel_refs; + struct objc_abi_selector *_Nullable sel_refs; uint16_t cls_def_cnt; uint16_t cat_def_cnt; - void *defs[1]; + void *_Nonnull defs[1]; }; struct objc_abi_module { unsigned long version; /* 9 = non-fragile */ unsigned long size; - const char *name; - struct objc_abi_symtab *symtab; + const char *_Nullable name; + struct objc_abi_symtab *_Nonnull symtab; }; struct objc_hashtable_bucket { - const void *key, *obj; + const void *_Nonnull key, *_Nonnull obj; uint32_t hash; }; struct objc_hashtable { - uint32_t (*hash)(const void *key); - bool (*equal)(const void *key1, const void *key2); + uint32_t (*_Nonnull hash)(const void *_Nonnull key); + bool (*_Nonnull equal)(const void *_Nonnull key1, + const void *_Nonnull key2); uint32_t count, size; - struct objc_hashtable_bucket **data; + struct objc_hashtable_bucket *_Nonnull *_Nullable data; }; struct objc_sparsearray { struct objc_sparsearray_data { - void *next[256]; - } *data; + void *_Nullable next[256]; + } *_Nonnull data; uint8_t index_size; }; struct objc_dtable { struct objc_dtable_level2 { #ifdef OF_SELUID24 struct objc_dtable_level3 { - IMP buckets[256]; - } *buckets[256]; + IMP _Nullable buckets[256]; + } *_Nonnull buckets[256]; #else - IMP buckets[256]; + IMP _Nullable buckets[256]; #endif - } *buckets[256]; + } *_Nonnull buckets[256]; }; -extern void objc_register_all_categories(struct objc_abi_symtab *); -extern struct objc_category **objc_categories_for_class(Class); +extern void objc_register_all_categories(struct objc_abi_symtab *_Nonnull); +extern struct objc_category *_Nullable *_Nullable + objc_categories_for_class(Class _Nonnull); extern void objc_unregister_all_categories(void); -extern void objc_initialize_class(Class); -extern void objc_update_dtable(Class); -extern void objc_register_all_classes(struct objc_abi_symtab *); -extern Class objc_classname_to_class(const char *, bool); -extern void objc_unregister_class(Class); +extern void objc_initialize_class(Class _Nonnull); +extern void objc_update_dtable(Class _Nonnull); +extern void objc_register_all_classes(struct objc_abi_symtab *_Nonnull); +extern Class _Nullable objc_classname_to_class(const char *_Nonnull, bool); +extern void objc_unregister_class(Class _Nonnull); extern void objc_unregister_all_classes(void); -extern uint32_t objc_hash_string(const void *); -extern bool objc_equal_string(const void *, const void *); -extern struct objc_hashtable *objc_hashtable_new(uint32_t (*)(const void *), - bool (*)(const void *, const void *), uint32_t); +extern uint32_t objc_hash_string(const void *_Nonnull); +extern bool objc_equal_string(const void *_Nonnull, const void *_Nonnull); +extern struct objc_hashtable *_Nonnull objc_hashtable_new( + uint32_t (*_Nonnull)(const void *_Nonnull), + bool (*_Nonnull)(const void *_Nonnull, const void *_Nonnull), + uint32_t); extern struct objc_hashtable_bucket objc_deleted_bucket; -extern void objc_hashtable_set(struct objc_hashtable *, const void *, - const void *); -extern void *objc_hashtable_get(struct objc_hashtable *, const void *); -extern void objc_hashtable_delete(struct objc_hashtable *, const void *); -extern void objc_hashtable_free(struct objc_hashtable *); -extern void objc_register_selector(struct objc_abi_selector *); -extern void objc_register_all_selectors(struct objc_abi_symtab *); +extern void objc_hashtable_set(struct objc_hashtable *_Nonnull, + const void *_Nonnull, const void *_Nonnull); +extern void *_Nullable objc_hashtable_get(struct objc_hashtable *_Nonnull, + const void *_Nonnull); +extern void objc_hashtable_delete(struct objc_hashtable *_Nonnull, + const void *_Nonnull); +extern void objc_hashtable_free(struct objc_hashtable *_Nonnull); +extern void objc_register_selector(struct objc_abi_selector *_Nonnull); +extern void objc_register_all_selectors(struct objc_abi_symtab *_Nonnull); extern void objc_unregister_all_selectors(void); -extern struct objc_sparsearray *objc_sparsearray_new(uint8_t); -extern void *objc_sparsearray_get(struct objc_sparsearray *, uintptr_t); -extern void objc_sparsearray_set(struct objc_sparsearray *, uintptr_t, void *); -extern void objc_sparsearray_free(struct objc_sparsearray *); -extern struct objc_dtable *objc_dtable_new(void); -extern void objc_dtable_copy(struct objc_dtable *, struct objc_dtable *); -extern void objc_dtable_set(struct objc_dtable *, uint32_t, IMP); -extern void objc_dtable_free(struct objc_dtable *); +extern struct objc_sparsearray *_Nonnull objc_sparsearray_new(uint8_t); +extern void *_Nullable objc_sparsearray_get(struct objc_sparsearray *_Nonnull, + uintptr_t); +extern void objc_sparsearray_set(struct objc_sparsearray *_Nonnull, uintptr_t, + void *_Nullable); +extern void objc_sparsearray_free(struct objc_sparsearray *_Nonnull); +extern struct objc_dtable *_Nonnull objc_dtable_new(void); +extern void objc_dtable_copy(struct objc_dtable *_Nonnull, + struct objc_dtable *_Nonnull); +extern void objc_dtable_set(struct objc_dtable *_Nonnull, uint32_t, + IMP _Nullable); +extern void objc_dtable_free(struct objc_dtable *_Nonnull); extern void objc_dtable_cleanup(void); -extern void objc_init_static_instances(struct objc_abi_symtab *); +extern void objc_init_static_instances(struct objc_abi_symtab *_Nonnull); extern void objc_forget_pending_static_instances(void); #ifdef OF_HAVE_THREADS extern void objc_global_mutex_lock(void); extern void objc_global_mutex_unlock(void); extern void objc_global_mutex_free(void); @@ -164,12 +173,12 @@ # define objc_global_mutex_lock() # define objc_global_mutex_unlock() # define objc_global_mutex_free() #endif -static inline IMP -objc_dtable_get(const struct objc_dtable *dtable, uint32_t idx) +static inline IMP _Nullable +objc_dtable_get(const struct objc_dtable *_Nonnull dtable, uint32_t idx) { #ifdef OF_SELUID24 uint8_t i = idx >> 16; uint8_t j = idx >> 8; uint8_t k = idx; Index: src/threading.h ================================================================== --- src/threading.h +++ src/threading.h @@ -136,11 +136,11 @@ } static OF_INLINE bool of_tlskey_set(of_tlskey_t key, void *ptr) { - return !pthread_setspecific(key, ptr); + return (pthread_setspecific(key, ptr) == 0); } #elif defined(OF_WINDOWS) static OF_INLINE void * of_tlskey_get(of_tlskey_t key) { @@ -171,11 +171,11 @@ { #if defined(OF_HAVE_ATOMIC_OPS) *spinlock = 0; return true; #elif defined(OF_HAVE_PTHREAD_SPINLOCKS) - return !pthread_spin_init(spinlock, 0); + return (pthread_spin_init(spinlock, 0) == 0); #else return of_mutex_new(spinlock); #endif } @@ -188,11 +188,11 @@ return true; } return false; #elif defined(OF_HAVE_PTHREAD_SPINLOCKS) - return !pthread_spin_trylock(spinlock); + return (pthread_spin_trylock(spinlock) == 0); #else return of_mutex_trylock(spinlock); #endif } @@ -209,11 +209,11 @@ while (!of_spinlock_trylock(spinlock)) of_thread_yield(); return true; #elif defined(OF_HAVE_PTHREAD_SPINLOCKS) - return !pthread_spin_lock(spinlock); + return (pthread_spin_lock(spinlock) == 0); #else return of_mutex_lock(spinlock); #endif } @@ -225,11 +225,11 @@ of_memory_barrier_release(); return ret; #elif defined(OF_HAVE_PTHREAD_SPINLOCKS) - return !pthread_spin_unlock(spinlock); + return (pthread_spin_unlock(spinlock) == 0); #else return of_mutex_unlock(spinlock); #endif } @@ -237,10 +237,10 @@ of_spinlock_free(of_spinlock_t *spinlock) { #if defined(OF_HAVE_ATOMIC_OPS) return true; #elif defined(OF_HAVE_PTHREAD_SPINLOCKS) - return !pthread_spin_destroy(spinlock); + return (pthread_spin_destroy(spinlock) == 0); #else return of_mutex_free(spinlock); #endif } Index: src/unicode.h ================================================================== --- src/unicode.h +++ src/unicode.h @@ -22,16 +22,16 @@ #define OF_UNICODE_CASEFOLDING_TABLE_SIZE 0x1EA #ifdef __cplusplus extern "C" { #endif -extern const of_unichar_t *const +extern const of_unichar_t *const _Nonnull of_unicode_uppercase_table[OF_UNICODE_UPPERCASE_TABLE_SIZE]; -extern const of_unichar_t *const +extern const of_unichar_t *const _Nonnull of_unicode_lowercase_table[OF_UNICODE_LOWERCASE_TABLE_SIZE]; -extern const of_unichar_t *const +extern const of_unichar_t *const _Nonnull of_unicode_titlecase_table[OF_UNICODE_TITLECASE_TABLE_SIZE]; -extern const of_unichar_t *const +extern const of_unichar_t *const _Nonnull of_unicode_casefolding_table[OF_UNICODE_CASEFOLDING_TABLE_SIZE]; #ifdef __cplusplus } #endif