Skip to content

[PackageCMO] Optimize witness thunks. #74468

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

Merged
merged 1 commit into from
Jun 18, 2024
Merged

[PackageCMO] Optimize witness thunks. #74468

merged 1 commit into from
Jun 18, 2024

Conversation

elsh
Copy link
Contributor

@elsh elsh commented Jun 17, 2024

  • Keep witness thunk linkage private for a package protocol member in SILGen.
  • Optimize private/hidden functions during Package CMO; if they don't contain references that have private/hidden symbols, serialize them and set the linkage to shared. For unserialized witness thunks, set the linkage to package, so the witness table itself can be serialized.
  • Update witness table and vtable serialization.

Resolves rdar://129976582

@elsh
Copy link
Contributor Author

elsh commented Jun 17, 2024

@swift-ci test

- Keep witness thunk linkage private for a package protocol member in SILGen.
- Optimize private/hidden functions during Package CMO; if they don't contain
references that have private/hidden symbols, serialize them and set the linkage
to shared. For unserialized witness thunks, set the linkage to package, so the
witness table itself can be serialized.
- Update witness table and vtable serialization.

Resolves rdar://129976582
@elsh elsh force-pushed the elsh/pcmo-conformance branch from 70a0526 to 534c35b Compare June 17, 2024 20:08
@elsh
Copy link
Contributor Author

elsh commented Jun 17, 2024

@swift-ci test

Copy link
Contributor

@aschwaighofer aschwaighofer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@elsh elsh mentioned this pull request Jun 18, 2024
@elsh elsh enabled auto-merge June 18, 2024 02:36
@elsh elsh merged commit 9b53e20 into main Jun 18, 2024
4 of 5 checks passed
@elsh elsh deleted the elsh/pcmo-conformance branch June 18, 2024 02:47
elsh added a commit that referenced this pull request Jun 18, 2024
PR #74468 rolled back conformance serialized kind to IsNotSerialized
for non-public decls. This caused static witness thunks to be
removed while use site expects them, causing linker issues.
This PR provides a workaround until a proper fix is made.

rdar://130103572
elsh added a commit that referenced this pull request Jun 18, 2024
PR #74468 rolled back conformance serialized kind to IsNotSerialized
for non-public decls. This caused static witness thunks to be
removed while use site expects them, causing linker issues.
This PR provides a workaround until a proper fix is made.

rdar://130103572
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants