diff options
author | Miles Bader <miles@lsi.nec.co.jp> | 2002-08-14 09:14:40 +0000 |
---|---|---|
committer | Miles Bader <miles@lsi.nec.co.jp> | 2002-08-14 09:14:40 +0000 |
commit | 1c0f265241054461db57bd51209ef26773125caa (patch) | |
tree | 243a196d8da44cbf701178389d84b070a08c5729 | |
parent | 992f2d15e296d0a746f5161ebf3d4511ead9d99d (diff) |
Add flow-control hints with __malloc_likely and __malloc_unlikely.
-rw-r--r-- | libc/stdlib/malloc/malloc.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libc/stdlib/malloc/malloc.c b/libc/stdlib/malloc/malloc.c index db953a9c0..b2fb6677b 100644 --- a/libc/stdlib/malloc/malloc.c +++ b/libc/stdlib/malloc/malloc.c @@ -45,9 +45,11 @@ malloc (size_t size) __malloc_lock (); + /* First try to get memory that's already in our heap. */ mem = __heap_alloc (heap, &size); - if (! mem) - /* We couldn't allocate from the heap, so get some more memory + + if (__malloc_unlikely (! mem)) + /* We couldn't allocate from the heap, so grab some more from the system, add it to the heap, and try again. */ { /* If we're trying to allocate a block bigger than the default @@ -74,7 +76,7 @@ malloc (size_t size) /* Use sbrk we can, as it's faster than mmap, and guarantees contiguous allocation. */ block = sbrk (block_size); - if (block != (void *)-1) + if (__malloc_likely (block != (void *)-1)) { /* Because sbrk can return results of arbitrary alignment, align the result to a MALLOC_ALIGNMENT boundary. */ @@ -103,7 +105,7 @@ malloc (size_t size) /* Get back the main lock. */ __malloc_lock (); - if (block != (void *)-1) + if (__malloc_likely (block != (void *)-1)) { MALLOC_DEBUG (" adding memory: 0x%lx - 0x%lx (%d bytes)\n", (long)block, (long)block + block_size, block_size); @@ -118,7 +120,7 @@ malloc (size_t size) __malloc_unlock (); - if (mem) + if (__malloc_likely (mem)) /* Record the size of this block. */ { mem = MALLOC_ADDR (mem); |