Use simple locks in dlmalloc

This commit is contained in:
Justine Tunney 2023-11-12 06:44:20 -08:00
parent bcf268adf8
commit bed77186c3
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
3 changed files with 3 additions and 14 deletions

View file

@ -23,7 +23,6 @@
#include "libc/thread/thread.h" #include "libc/thread/thread.h"
#include "libc/thread/tls.h" #include "libc/thread/tls.h"
#include "third_party/dlmalloc/vespene.internal.h" #include "third_party/dlmalloc/vespene.internal.h"
#include "third_party/nsync/mu.h"
// clang-format off // clang-format off
#define FOOTERS 0 #define FOOTERS 0

View file

@ -30,11 +30,7 @@
*/ */
#ifdef TINY
#define MLOCK_T atomic_uint #define MLOCK_T atomic_uint
#else
#define MLOCK_T nsync_mu
#endif
static int malloc_wipe(MLOCK_T *lk) { static int malloc_wipe(MLOCK_T *lk) {
bzero(lk, sizeof(*lk)); bzero(lk, sizeof(*lk));
@ -43,23 +39,15 @@ static int malloc_wipe(MLOCK_T *lk) {
static int malloc_lock(MLOCK_T *lk) { static int malloc_lock(MLOCK_T *lk) {
if (!__threaded) return 0; if (!__threaded) return 0;
#ifdef TINY
while (atomic_exchange_explicit(lk, 1, memory_order_acquire)) { while (atomic_exchange_explicit(lk, 1, memory_order_acquire)) {
pthread_pause_np(); pthread_pause_np();
} }
#else
nsync_mu_lock(lk);
#endif
return 0; return 0;
} }
static int malloc_unlock(MLOCK_T *lk) { static int malloc_unlock(MLOCK_T *lk) {
if (!__threaded) return 0; if (!__threaded) return 0;
#ifdef TINY
atomic_store_explicit(lk, 0, memory_order_release); atomic_store_explicit(lk, 0, memory_order_release);
#else
nsync_mu_unlock(lk);
#endif
return 0; return 0;
} }

View file

@ -30,6 +30,7 @@ make -j8 m=x86_64 \
o/x86_64/tool/build/fixupobj.com.dbg \ o/x86_64/tool/build/fixupobj.com.dbg \
o/x86_64/tool/build/zipcopy.com.dbg \ o/x86_64/tool/build/zipcopy.com.dbg \
o/x86_64/tool/build/mkdeps.com.dbg \ o/x86_64/tool/build/mkdeps.com.dbg \
o/x86_64/tool/build/zipobj.com.dbg \
o/x86_64/tool/build/apelink.com.dbg \ o/x86_64/tool/build/apelink.com.dbg \
o/x86_64/tool/build/pecheck.com.dbg \ o/x86_64/tool/build/pecheck.com.dbg \
o/x86_64/third_party/make/make.com.dbg \ o/x86_64/third_party/make/make.com.dbg \
@ -49,6 +50,7 @@ make -j8 m=aarch64 \
o/aarch64/tool/build/fixupobj.com.dbg \ o/aarch64/tool/build/fixupobj.com.dbg \
o/aarch64/tool/build/zipcopy.com.dbg \ o/aarch64/tool/build/zipcopy.com.dbg \
o/aarch64/tool/build/mkdeps.com.dbg \ o/aarch64/tool/build/mkdeps.com.dbg \
o/aarch64/tool/build/zipobj.com.dbg \
o/aarch64/tool/build/apelink.com.dbg \ o/aarch64/tool/build/apelink.com.dbg \
o/aarch64/tool/build/pecheck.com.dbg \ o/aarch64/tool/build/pecheck.com.dbg \
o/aarch64/third_party/make/make.com.dbg \ o/aarch64/third_party/make/make.com.dbg \
@ -114,7 +116,7 @@ cp -af tool/cosmocc/bin/* "$OUTDIR/bin/"
cp -f o/x86_64/ape/ape.elf "$OUTDIR/bin/" cp -f o/x86_64/ape/ape.elf "$OUTDIR/bin/"
cp -f o/x86_64/ape/ape.macho "$OUTDIR/bin/" cp -f o/x86_64/ape/ape.macho "$OUTDIR/bin/"
cp -f o/aarch64/ape/ape.elf "$OUTDIR/bin/ape.aarch64" cp -f o/aarch64/ape/ape.elf "$OUTDIR/bin/ape.aarch64"
for x in assimilate march-native mktemper fixupobj zipcopy apelink pecheck mkdeps; do for x in assimilate march-native mktemper fixupobj zipcopy apelink pecheck mkdeps zipobj; do
o//tool/build/apelink.com \ o//tool/build/apelink.com \
-l o/x86_64/ape/ape.elf \ -l o/x86_64/ape/ape.elf \
-l o/aarch64/ape/ape.elf \ -l o/aarch64/ape/ape.elf \