• Robert Griesemer's avatar
    cmd/compile: export inlined function bodies · a9ea36af
    Robert Griesemer authored
    Completed implementation for exporting inlined functions
    using the new binary export format. This change passes
    (export GO_GCFLAGS=-newexport; make all.bash) but for
    gc's builtin_test.go which we need to adjust before enabling
    this code by default.
    
    For a high-level description of the export format see the
    comment at the top of bexport.go.
    
    Major changes:
    
    1) The export format for the platform independent export data
       changed: When we export inlined function bodies, additional
       objects (other functions, types, etc.) that are referred to
       by the function bodies will need to be exported. While this
       doesn't affect the platform-independent portion directly, it
       adds more objects to the exportlist while we are exporting.
       Instead of trying to sort the objects into groups, just export
       objects as they appear in the export list. This is slightly
       less compact (one extra byte per object), but it is simpler
       and much more flexible.
    
    2) The export format contains now three sections: 1) The plat-
       form independent objects, 2) the objects pulled in for export
       via inlined function bodies, and 3) the inlined function bodies.
    
    3) Completed the exporting and importing code for inlined function
       bodies. The format is completely compiler-specific and easily
       changeable w/o affecting other tools. There is still quite a
       bit of room for denser encoding. This can happen at any time
       in the future.
    
    This change contains also the adjustments for go/internal/gcimporter,
    necessary because of the export format change 1) mentioned above.
    
    For #13241.
    
    Change-Id: I86bca0bd984b12ccf13d0d30892e6e25f6d04ed5
    Reviewed-on: https://go-review.googlesource.com/21172
    Run-TryBot: Robert Griesemer <gri@golang.org>
    Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    a9ea36af
fmt.go 37.8 KB