• Austin Clements's avatar
    runtime: steal space for stack barrier tracking from stack · 3f6e69ac
    Austin Clements authored
    The stack barrier code will need a bookkeeping structure to keep track
    of the overwritten return PCs. This commit introduces and allocates
    this structure, but does not yet use the structure.
    
    We don't want to allocate space for this structure during garbage
    collection, so this commit allocates it along with the allocation of
    the corresponding stack. However, we can't do a regular allocation in
    newstack because mallocgc may itself grow the stack (which would lead
    to a recursive allocation). Hence, this commit makes the bookkeeping
    structure part of the stack allocation itself by stealing the
    necessary space from the top of the stack allocation. Since the size
    of this bookkeeping structure is logarithmic in the size of the stack,
    this has minimal impact on stack behavior.
    
    Change-Id: Ia14408be06aafa9ca4867f4e70bddb3fe0e96665
    Reviewed-on: https://go-review.googlesource.com/10313Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    3f6e69ac
runtime2.go 22 KB