Stop forcing linker array entries to be retained. They will now be GC'd like normal, but will be iterable if retained. #23378
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Stop forcing linker array entries to be retained. They will now be GC'd like normal, but will be iterable if retained.
There was no need to force them to be retained. Extensions only need to be retained if they are referenced, and normal linker GC can tell us if they are referenced.
This will make the ExtensionRegistry linker array agnostic to how extensions are packaged into TUs. However, TUs are still relevant if we want to perform "implicit weak" static tree shaking, because any extensions that are colocated in the same file will cause all referenced sub-message types to be pulled into the link. But this is no worse than what we get for regular messages -- for implicit weak we should always put every message and every extension into its own TU.