• 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
api Loading commit data...
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...