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 code has been reviewed and submitted internally. Feel free to discuss on
the PR, and we can submit follow-up changes as necessary.
Commits:
Refactor RequestKinds.extractKeyType(RequestKind, TypeMirror) to RequestKinds.extractKeyType(TypeMirror)
RequestKinds.extractKeyType(RequestKind, TypeMirror) currently requires passing in the "correct" RequestKind for the given TypeMirror. This CL refactors the method so that the RequestKind is no longer needed because it's calculated internally. This makes the method easier to use, and we no longer have to check that the user passed in a valid RequestKind.
RELNOTES=N/A
5d863f0
Remove static RequestKinds cache and improve build performance.
See #1645
The static RequestKinds cache causes a memory leak in gradle due to the persistent GradleDaemon. This CL removes that cache entirely, and instead fixes the root causes of the performance issues, by short circuiting InjectionSiteVisitor to abort early if the method is not injectable. This avoids a lot of unnecessary calls to RequestKinds.getRequestKind() for methods that are not injectable (e.g. aren't annotated with @Inject).
The aggregated pprof results from 10 runs before and after changes in this CL are below.
ComponentProcessingStep.process 51.80 43.25 -16.5%
RequestKinds.getRequestKind 8.48 0.33 -95.9%
RELNOTES=Fix memory leak with RequestKinds cache.
72a2b37
Add a flag -Adagger.experimentalDaggerErrorMessages for controlling the new error messages.
Also add a CompositeBindingGraphPlugin for combining error messages so that root components are only reported once.
d7f8294