[XABT] Don't run AddKeepAlivesStep on .NET for Android assemblies.
#9823
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.
Fixes: #8421
Context: dotnet/java-interop#719
Context: #5278
In dotnet/java-interop#719, we realized we needed to call
GC.KeepAlive ()on objects that are passed to native code to prevent the GC from collecting them prematurely.However, this only solved the issue for newly compiled binding libraries and not the existing ecosystem of binding libraries. Thus we added #5278, a "linker" step that would add
GC.KeepAlive ()calls to existing binding libraries.The
AddKeepAlivesStepruns on all assemblies the contain a reference toJava.Lang.Object, including ones that already have the keep-alives compiled in. Modify the step to skip assemblies that are built against .NET for Android, as we know they have the compiled keep-alives. Technically we could go back to Xamarin.Android 11.1, but using .NET for Android as the cutoff will easily filter out the vast majority of binding libraries.This results in decent savings for the following test case:
_LinkAssembliesNoShrink)However, in cases like #8421 where this step seems to be taking an abnormal amount of time there should be substantial improvements.