• Dmitriy Vyukov's avatar
    runtime: introduce helper persistentalloc() function · 47e0a3d7
    Dmitriy Vyukov authored
    It is a caching wrapper around SysAlloc() that can allocate small chunks.
    Use it for symtab allocations. Reduces number of symtab walks from 4 to 3
    (reduces buildfuncs time from 10ms to 7.5ms on a large binary,
    reduces initial heap size by 680K on the same binary).
    Also can be used for type info allocation, itab allocation.
    There are also several places in GC where we do the same thing,
    they can be changed to use persistentalloc().
    Also can be used in FixAlloc, because each instance of FixAlloc allocates
    in 128K regions, which is too eager.
    
    R=golang-dev, daniel.morsing, khr
    CC=golang-dev
    https://golang.org/cl/9805043
    47e0a3d7
malloc.h 17 KB