• Keith Randall's avatar
    undo CL 101570044 / 2c57aaea79c4 · f378f300
    Keith Randall authored
    redo stack allocation.  This is mostly the same as
    the original CL with a few bug fixes.
    
    1. add racemalloc() for stack allocations
    2. fix poolalloc/poolfree to terminate free lists correctly.
    3. adjust span ref count correctly.
    4. don't use cache for sizes >= StackCacheSize.
    
    Should fix bugs and memory leaks in original changelist.
    
    ««« original CL description
    undo CL 104200047 / 318b04f28372
    
    Breaks windows and race detector.
    TBR=rsc
    
    ««« original CL description
    runtime: stack allocator, separate from mallocgc
    
    In order to move malloc to Go, we need to have a
    separate stack allocator.  If we run out of stack
    during malloc, malloc will not be available
    to allocate a new stack.
    
    Stacks are the last remaining FlagNoGC objects in the
    GC heap.  Once they are out, we can get rid of the
    distinction between the allocated/blockboundary bits.
    (This will be in a separate change.)
    
    Fixes #7468
    Fixes #7424
    
    LGTM=rsc, dvyukov
    R=golang-codereviews, dvyukov, khr, dave, rsc
    CC=golang-codereviews
    https://golang.org/cl/104200047
    »»»
    
    TBR=rsc
    CC=golang-codereviews
    https://golang.org/cl/101570044
    »»»
    
    LGTM=dvyukov
    R=dvyukov, dave, khr, alex.brainman
    CC=golang-codereviews
    https://golang.org/cl/112240044
    f378f300
mheap.c 25.4 KB