[REFACTOR] Split managers into multiple maps #19159
Merged
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.
This refactors managers to split different types of managers into
different maps per-type. This allows more than one type of manager to
be associated with a given definition. For instance, this is a useful
capability for helper and modifier managers to have, since helpers and
modifiers have a lot in common and may end up being able to share
implementations.
This also upstreams the deduplication logic from Glimmer.js, which was
more stringent than in Ember. In Ember, we currently create one instance
of a given manager per-component-definition, whereas in Glimmer.js, we
create one per-factory/owner combination. Given that managers are
generally encouraged to be mostly-stateless in general, this change
shouldn't be a problem, and should be slightly more performant in apps
with many component definitions.