• Dmitriy Vyukov's avatar
    runtime: don't acquirem on malloc fast path · 30940cfa
    Dmitriy Vyukov authored
    Mallocgc must be atomic wrt GC, but for performance reasons
    don't acquirem/releasem on fast path. The code does not have
    split stack checks, so it can't be preempted by GC.
    Functions like roundup/add are inlined. And onM/racemalloc are nosplit.
    Also add debug code that checks these assumptions.
    
    benchmark                     old ns/op     new ns/op     delta
    BenchmarkMalloc8              20.5          17.2          -16.10%
    BenchmarkMalloc16             29.5          27.0          -8.47%
    BenchmarkMallocTypeInfo8      31.5          27.6          -12.38%
    BenchmarkMallocTypeInfo16     34.7          30.9          -10.95%
    
    LGTM=khr
    R=golang-codereviews, khr
    CC=golang-codereviews, rlh, rsc
    https://golang.org/cl/123100043
    30940cfa
Name
Last commit
Last update
..
cmd Loading commit data...
lib9 Loading commit data...
libbio Loading commit data...
liblink Loading commit data...
pkg Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...
sudo.bash Loading commit data...