As mmap(2) is no longer a LOCK syscall, do away with the extra
authorotto <otto@openbsd.org>
Wed, 10 May 2023 07:58:06 +0000 (07:58 +0000)
committerotto <otto@openbsd.org>
Wed, 10 May 2023 07:58:06 +0000 (07:58 +0000)
unlock-lock dance it serves no real purpose any more. Confirmed
by a small performance increase in tests.  ok @tb

lib/libc/stdlib/malloc.c

index 5cd7ff8..a6728b2 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: malloc.c,v 1.282 2023/04/21 06:19:40 jsg Exp $        */
+/*     $OpenBSD: malloc.c,v 1.283 2023/05/10 07:58:06 otto Exp $       */
 /*
  * Copyright (c) 2008, 2010, 2011, 2016, 2023 Otto Moerbeek <otto@drijf.net>
  * Copyright (c) 2012 Matthew Dempsky <matthew@openbsd.org>
@@ -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 zero_fill)
                        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 zero_fill)
                }
 
        }
-       _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 */