-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[Serialization] Store offset of decls in .swiftsourceinfo #37105
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
Conversation
@swift-ci please test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are the line/columm in the serialized locations still being used for anything?
3e69121
to
67f9578
Compare
@swift-ci please test |
67f9578
to
ff28009
Compare
@swift-ci please test |
Build failed |
The locations stored in .swiftsourceinfo included the presumed file, line, and column. When a location is requested it would read these, open the external file, create a line map, and find the offset corresponding to that line/column. The offset is known during serialization though, so output it as well to avoid having to read the file and generate the line map. Since the serialized location is returned from `Decl::getLoc()`, it should not be the presumed location. Instead, also output the line directives so that the presumed location can be built as per normal locations. Finally, move the cache out of `Decl` and into `ASTContext`, since very few declarations will actually have their locations deserialized. Make sure to actually write to that cache so it's used - the old cache was never written to.
ff28009
to
c763ab5
Compare
Forgot to up the .swiftsourceinfo version, have done so now. The .swiftsourceinfo will currently be ignored if the version doesn't match. (This wasn't the failure, which looks to be unrelated and will likely fail again...) @swift-ci please test |
The locations stored in .swiftsourceinfo included the presumed file,
line, and column. When a location is requested it would read these, open
the external file, create a line map, and find the offset corresponding
to that line/column.
The offset is known during serialization though, so output it as well to
avoid having to read the file and generate the line map.
Since the serialized location is returned from
Decl::getLoc()
, itshould not be the presumed location. Instead, also output the line
directives so that the presumed location can be built as per normal
locations.
Finally, move the cache out of
Decl
and intoASTContext
, since veryfew declarations will actually have their locations deserialized. Make
sure to actually write to that cache so it's used - the old cache was
never written to.