Changeset 2050 in kBuild
- Timestamp:
- Nov 3, 2008 2:53:07 PM (16 years ago)
- Location:
- trunk/src/kmk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/make.h
r2041 r2050 574 574 void alloccache_print_all (void); 575 575 struct alloccache_free_ent *alloccache_alloc_grow (struct alloccache *cache); 576 void alloccache_free (struct alloccache *cache, void *item); 576 577 577 578 /* Allocate an item. */ … … 602 603 } 603 604 604 /* Free an item. */605 MY_INLINE void606 alloccache_free (struct alloccache *cache, void *item)607 {608 struct alloccache_free_ent *f = (struct alloccache_free_ent *)item;609 #if 0 /*ndef NDEBUG*/610 struct alloccache_free_ent *c;611 unsigned int i = 0;612 for (c = cache->free_head; c != NULL; c = c->next, i++)613 MY_ASSERT_MSG (c != f && i < 0x10000000,614 ("i=%u total_count=%u\n", i, cache->total_count));615 #endif616 #ifdef __GNUC__617 /* GCC 3.2.3 has been observed having aliasing issues, so, setup a618 barrier for it here. */619 # if (__GNUC__ == 3 && __GNUC_PATCHLEVEL__ <= 3) || __GNUC__ < 3620 __asm__ __volatile__ ("" ::: "memory");621 # endif622 #endif623 624 f->next = cache->free_head;625 cache->free_head = f;626 MAKE_STATS(cache->free_count++;);627 }628 605 629 606 /* the alloc caches */ -
trunk/src/kmk/misc.c
r2035 r2050 1164 1164 #ifdef CONFIG_WITH_ALLOC_CACHES 1165 1165 1166 /* Free am item. 1167 This was not inlined because of aliasing issues arrising with GCC. */ 1168 void 1169 alloccache_free (struct alloccache *cache, void *item) 1170 { 1171 struct alloccache_free_ent *f = (struct alloccache_free_ent *)item; 1172 #if 0 /*ndef NDEBUG*/ 1173 struct alloccache_free_ent *c; 1174 unsigned int i = 0; 1175 for (c = cache->free_head; c != NULL; c = c->next, i++) 1176 MY_ASSERT_MSG (c != f && i < 0x10000000, 1177 ("i=%u total_count=%u\n", i, cache->total_count)); 1178 #endif 1179 1180 f->next = cache->free_head; 1181 cache->free_head = f; 1182 MAKE_STATS(cache->free_count++;); 1183 } 1184 1166 1185 /* Default allocator. */ 1167 1186 static void *
Note:
See TracChangeset
for help on using the changeset viewer.