• Cherry Zhang's avatar
    [dev.link] cmd/compile, cmd/asm: assign index to symbols · 53b7c182
    Cherry Zhang authored
    We are planning to use indices for symbol references, instead of
    symbol names. Here we assign indices to symbols defined in the
    package being compiled, and propagate the indices to the
    dependent packages in the export data.
    
    A symbol is referenced by a tuple, (package index, symbol index).
    Normally, for a given symbol, this index is unique, and the
    symbol index is globally consistent (but with exceptions, see
    below). The package index is local to a compilation. For example,
    when compiling the fmt package, fmt.Println gets assigned index
    25, then all packages that reference fmt.Println will refer it
    as (X, 25) with some X. X is the index for the fmt package, which
    may differ in different compilations.
    
    There are some symbols that do not have clear package affiliation,
    such as dupOK symbols and linknamed symbols. We cannot give them
    globally consistent indices. We categorize them as non-package
    symbols, assign them with package index 1 and a symbol index that
    is only meaningful locally.
    
    Currently nothing will consume the indices.
    
    All this is behind a flag, -newobj. The flag needs to be set for
    all builds (-gcflags=all=-newobj -asmflags=all=-newobj), or none.
    
    Change-Id: I18e489c531e9a9fbc668519af92c6116b7308cab
    Reviewed-on: https://go-review.googlesource.com/c/go/+/196029Reviewed-by: default avatarThan McIntosh <thanm@google.com>
    53b7c182
main.go 1.97 KB