Overview
Comment: | Return objects as void* instead of const void*. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | runtime |
Files: | files | file ages | folders |
SHA3-256: |
bc531024f5da3ef7fbbc122aa516d949 |
User & Date: | js on 2012-05-10 18:38:16 |
Other Links: | branch diff | manifest | tags |
Context
2012-05-10
| ||
18:38 | Sequential selectors to reduce fragmentation. check-in: 3f0b9df793 user: js tags: runtime | |
18:38 | Return objects as void* instead of const void*. check-in: bc531024f5 user: js tags: runtime | |
18:21 | objc_hashtable_alloc() -> objc_hashtable_new(). check-in: 963db3089f user: js tags: runtime | |
Changes
Modified src/runtime/hashtable.m from [2108c2f8fb] to [f9877d131a].
︙ | ︙ | |||
171 172 173 174 175 176 177 | insert(h, key, obj); return; } h->data[idx]->obj = obj; } | | | | 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | insert(h, key, obj); return; } h->data[idx]->obj = obj; } void* objc_hashtable_get(struct objc_hashtable *h, const char *key) { int64_t idx = index_for_key(h, key); if (idx < 0) return NULL; return (void*)h->data[idx]->obj; } void objc_hashtable_free(struct objc_hashtable *h) { uint32_t i; |
︙ | ︙ |
Modified src/runtime/runtime-private.h from [cfeaa72523] to [3a008110cb].
︙ | ︙ | |||
146 147 148 149 150 151 152 | extern void objc_register_all_classes(struct objc_abi_symtab*); extern Class objc_classname_to_class(const char*); extern void objc_free_all_classes(void); extern uint32_t objc_hash_string(const char*); extern struct objc_hashtable* objc_hashtable_new(uint32_t); extern void objc_hashtable_set(struct objc_hashtable*, const char*, const void*); | | | 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | extern void objc_register_all_classes(struct objc_abi_symtab*); extern Class objc_classname_to_class(const char*); extern void objc_free_all_classes(void); extern uint32_t objc_hash_string(const char*); extern struct objc_hashtable* objc_hashtable_new(uint32_t); extern void objc_hashtable_set(struct objc_hashtable*, const char*, const void*); extern void* objc_hashtable_get(struct objc_hashtable*, const char*); extern void objc_hashtable_free(struct objc_hashtable *h); extern BOOL objc_hashtable_warn_on_collision; extern void objc_register_selector(struct objc_abi_selector*); extern void objc_register_all_selectors(struct objc_abi_symtab*); extern void objc_free_all_selectors(void); extern struct objc_sparsearray* objc_sparsearray_new(void); extern void objc_sparsearray_copy(struct objc_sparsearray*, |
︙ | ︙ | |||
171 172 173 174 175 176 177 | extern BOOL objc_mutex_unlock(objc_mutex_t*); extern BOOL objc_mutex_free(objc_mutex_t*); extern void objc_global_mutex_lock(void); extern void objc_global_mutex_unlock(void); extern void objc_global_mutex_free(void); extern void objc_free_when_singlethreaded(void*); | | | | | 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | extern BOOL objc_mutex_unlock(objc_mutex_t*); extern BOOL objc_mutex_free(objc_mutex_t*); extern void objc_global_mutex_lock(void); extern void objc_global_mutex_unlock(void); extern void objc_global_mutex_free(void); extern void objc_free_when_singlethreaded(void*); static inline void* objc_sparsearray_get(const struct objc_sparsearray *s, uint32_t idx) { #ifndef OF_SELUID16 uint8_t i = idx >> 16; uint8_t j = idx >> 8; uint8_t k = idx; return (void*)s->buckets[i]->buckets[j]->buckets[k]; #else uint8_t i = idx >> 8; uint8_t j = idx; return (void*)s->buckets[i]->buckets[j]; #endif } #define ERROR(...) \ { \ fprintf(stderr, "[objc @ " __FILE__ ":%d] ", __LINE__); \ fprintf(stderr, __VA_ARGS__); \ fputs("\n", stderr); \ abort(); \ } |