Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/compile: switch to new export format #13241

Closed
griesemer opened this issue Nov 14, 2015 · 4 comments
Closed

cmd/compile: switch to new export format #13241

griesemer opened this issue Nov 14, 2015 · 4 comments

Comments

@griesemer
Copy link
Contributor

Tracking issue. Target is 1.7 Early.

@griesemer griesemer self-assigned this Nov 14, 2015
@griesemer griesemer added this to the Unplanned milestone Nov 14, 2015
@dr2chase
Copy link
Contributor

New export format will still allow us to easily add new info, yes?
I have in mind

"definitely bounds checks argJ"
"resultK is guaranteed non-nil"
"resultK is guaranteed non-negative"

For static error checking, it might also be useful to know which args will definitely be dereferenced.

@griesemer
Copy link
Contributor Author

Yes it will. I will describe in details how to do this once the new mechanism is completely in and enabled.

  • gri

@griesemer griesemer modified the milestones: Go1.7Early, Unplanned Nov 16, 2015
@gopherbot
Copy link

CL https://golang.org/cl/21172 mentions this issue.

gopherbot pushed a commit that referenced this issue Apr 4, 2016
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: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
@gopherbot
Copy link

CL https://golang.org/cl/22123 mentions this issue.

@golang golang locked and limited conversation to collaborators Apr 27, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants