Overview
Comment: | Save some space in the dtables. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
55c399cda60382faef5d909f43d1c61c |
User & Date: | js on 2013-03-09 10:07:06 |
Other Links: | manifest | tags |
Context
2013-03-12
| ||
20:10 | Document OFApplication a little more. check-in: 0d80255cc3 user: js tags: trunk | |
2013-03-09
| ||
10:07 | Save some space in the dtables. check-in: 55c399cda6 user: js tags: trunk | |
09:45 | Fix a few missing dealloc methods. check-in: b149669549 user: js tags: trunk | |
Changes
Modified src/runtime/runtime-private.h from [987c0ee218] to [291ac1241b].
︙ | ︙ | |||
105 106 107 108 109 110 111 | struct objc_sparsearray { struct objc_sparsearray_level2 *buckets[256]; }; #ifdef OF_SELUID24 struct objc_sparsearray_level2 { struct objc_sparsearray_level3 *buckets[256]; | < < < | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | struct objc_sparsearray { struct objc_sparsearray_level2 *buckets[256]; }; #ifdef OF_SELUID24 struct objc_sparsearray_level2 { struct objc_sparsearray_level3 *buckets[256]; }; struct objc_sparsearray_level3 { const void *buckets[256]; }; #else struct objc_sparsearray_level2 { const void *buckets[256]; }; #endif extern void objc_register_all_categories(struct objc_abi_symtab*); extern struct objc_category** objc_categories_for_class(Class); extern void objc_free_all_categories(void); extern void objc_initialize_class(Class); |
︙ | ︙ |
Modified src/runtime/sparsearray.m from [942cd907cc] to [89c18b15e1].
︙ | ︙ | |||
32 33 34 35 36 37 38 | { uint_fast16_t i; empty_level2 = malloc(sizeof(struct objc_sparsearray_level2)); if (empty_level2 == NULL) OBJC_ERROR("Not enough memory to allocate sparse array!"); | < < < < | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | { uint_fast16_t i; empty_level2 = malloc(sizeof(struct objc_sparsearray_level2)); if (empty_level2 == NULL) OBJC_ERROR("Not enough memory to allocate sparse array!"); #ifdef OF_SELUID24 empty_level3 = malloc(sizeof(struct objc_sparsearray_level3)); if (empty_level3 == NULL) OBJC_ERROR("Not enough memory to allocate sparse array!"); #endif #ifdef OF_SELUID24 for (i = 0; i < 256; i++) { empty_level2->buckets[i] = empty_level3; empty_level3->buckets[i] = NULL; } |
︙ | ︙ | |||
87 88 89 90 91 92 93 | uint_fast16_t i, j; #ifdef OF_SELUID24 uint_fast16_t k; #endif uint32_t idx; for (i = 0; i < 256; i++) { | | | | 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | uint_fast16_t i, j; #ifdef OF_SELUID24 uint_fast16_t k; #endif uint32_t idx; for (i = 0; i < 256; i++) { if (src->buckets[i] == empty_level2) continue; #ifdef OF_SELUID24 for (j = 0; j < 256; j++) { if (src->buckets[i]->buckets[j] == empty_level3) continue; for (k = 0; k < 256; k++) { const void *obj; obj = src->buckets[i]->buckets[j]->buckets[k]; |
︙ | ︙ | |||
136 137 138 139 140 141 142 | uint8_t j = idx >> 8; uint8_t k = idx; #else uint8_t i = idx >> 8; uint8_t j = idx; #endif | | < < | < < | 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | uint8_t j = idx >> 8; uint8_t k = idx; #else uint8_t i = idx >> 8; uint8_t j = idx; #endif if (s->buckets[i] == empty_level2) { struct objc_sparsearray_level2 *t; uint_fast16_t l; t = malloc(sizeof(struct objc_sparsearray_level2)); if (t == NULL) OBJC_ERROR("Not enough memory to insert into sparse " "array!"); for (l = 0; l < 256; l++) #ifdef OF_SELUID24 t->buckets[l] = empty_level3; #else t->buckets[l] = NULL; #endif s->buckets[i] = t; } #ifdef OF_SELUID24 if (s->buckets[i]->buckets[j] == empty_level3) { struct objc_sparsearray_level3 *t; uint_fast16_t l; t = malloc(sizeof(struct objc_sparsearray_level3)); if (t == NULL) OBJC_ERROR("Not enough memory to insert into sparse " "array!"); for (l = 0; l < 256; l++) t->buckets[l] = NULL; s->buckets[i]->buckets[j] = t; } s->buckets[i]->buckets[j]->buckets[k] = obj; |
︙ | ︙ | |||
192 193 194 195 196 197 198 | { uint_fast16_t i; #ifdef OF_SELUID24 uint_fast16_t j; #endif for (i = 0; i < 256; i++) { | | | | 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | { uint_fast16_t i; #ifdef OF_SELUID24 uint_fast16_t j; #endif for (i = 0; i < 256; i++) { if (s->buckets[i] == empty_level2) continue; #ifdef OF_SELUID24 for (j = 0; j < 256; j++) if (!s->buckets[i]->buckets[j] == empty_level3) free(s->buckets[i]->buckets[j]); #endif free(s->buckets[i]); } free(s); |
︙ | ︙ |