This was introduced to not stall other threads while mmap is called by
a thread. But now that mmap is unlocked, I believe it is no longer
useful.

A full build is slighlty faster with this. But this also needs testing
with you favorite multithreaded program.

        -Otto

Index: stdlib/malloc.c
===================================================================
RCS file: /home/cvs/src/lib/libc/stdlib/malloc.c,v
retrieving revision 1.282
diff -u -p -r1.282 malloc.c
--- stdlib/malloc.c     21 Apr 2023 06:19:40 -0000      1.282
+++ stdlib/malloc.c     27 Apr 2023 05:40:49 -0000
@@ -264,24 +264,6 @@ static void malloc_exit(void);
        (sz) = (uintptr_t)(r)->p & MALLOC_PAGEMASK,             \
        (sz) = ((sz) == 0 ? (r)->size : B2SIZE((sz) - 1))
 
-static inline void
-_MALLOC_LEAVE(struct dir_info *d)
-{
-       if (d->malloc_mt) {
-               d->active--;
-               _MALLOC_UNLOCK(d->mutex);
-       }
-}
-
-static inline void
-_MALLOC_ENTER(struct dir_info *d)
-{
-       if (d->malloc_mt) {
-               _MALLOC_LOCK(d->mutex);
-               d->active++;
-       }
-}
-
 static inline size_t
 hash(void *p)
 {
@@ -879,9 +861,7 @@ map(struct dir_info *d, size_t sz, int z
                        return p;
                }
                if (psz <= 1) {
-                       _MALLOC_LEAVE(d);
                        p = MMAP(cache->max * sz, d->mmap_flag);
-                       _MALLOC_ENTER(d);
                        if (p != MAP_FAILED) {
                                STATS_ADD(d->malloc_used, cache->max * sz);
                                cache->length = cache->max - 1;
@@ -901,9 +881,7 @@ map(struct dir_info *d, size_t sz, int z
                }
 
        }
-       _MALLOC_LEAVE(d);
        p = MMAP(sz, d->mmap_flag);
-       _MALLOC_ENTER(d);
        if (p != MAP_FAILED)
                STATS_ADD(d->malloc_used, sz);
        /* zero fill not needed */

Reply via email to