Skip to content
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

Mono MacCatalyst JustInterp leg should AOT less stuff #53689

Closed
lambdageek opened this issue Jun 3, 2021 · 3 comments
Closed

Mono MacCatalyst JustInterp leg should AOT less stuff #53689

lambdageek opened this issue Jun 3, 2021 · 3 comments
Assignees
Milestone

Comments

@lambdageek
Copy link
Member

lambdageek commented Jun 3, 2021

One thing that went in with #53197 is that we now run the AOT compiler with the JustInterp option on every .dll in the app to make a catalyst app bundle.

And while that's fine, i noticed some of the lanes started occasionally timing out - probably because they're doing more work than they used to.

For the JustInterp mode it's enough to only AOT System.Private.CoreLib.dll. I used to think you also need to AOT any assembly that had [DllImport] P/Invokes, but actually I'm not 100% sure now. We might be able to get some time back for those pipelines by AOTing fewer things for the JustInterp mode.

There is also some complication in the .props files to make sure everything was bundled properly (assemblies that are not AOTd still need to make it into the app bundle)

If we verify that P/Invokes don't matter, I think we can probably improve CI speed a bit by only AOTing System.Private.CoreLib.dll for the interp mode.

@ghost
Copy link

ghost commented Jun 3, 2021

Tagging subscribers to this area: @directhex
See info in area-owners.md if you want to be subscribed.

Issue Details

One thing that went in with #53197 is that we now run the AOT compiler with the JustInterp option on every .dll in the app to make a catalyst app bundle.

And while that's fine, i noticed some of the lanes started occasionally timing out - probably because this is doing more work than they used to.

For the JustInterp mode it's enough to only AOT System.Private.CoreLib.dll. I used to think you also need to AOT any assembly that had [DllImport] P/Invokes, but actually I'm not 100% sure now. We might be able to get some time back for those pipelines by AOTing fewer things for the JustInterp mode.

There is also some complication in the .props files to make sure everything was bundled properly (assemblies that are not AOTd still need to make it into the app bundle)

If we verify that P/Invokes don't matter, I think we can probably improve CI speed a bit by only AOTing System.Private.CoreLib.dll for the interp mode.

Author: lambdageek
Assignees: -
Labels:

area-Infrastructure-mono, os-maccatalyst

Milestone: -

@dotnet-issue-labeler dotnet-issue-labeler bot added the untriaged New issue has not been triaged by the area owner label Jun 3, 2021
@lambdageek
Copy link
Member Author

/cc @steveisok FYI

@akoeplinger akoeplinger added this to the 6.0.0 milestone Jun 17, 2021
@akoeplinger akoeplinger removed the untriaged New issue has not been triaged by the area owner label Jun 17, 2021
@lambdageek
Copy link
Member Author

I think this is done already:

<!-- JustInterp only needs to AOT CoreLib, the other assemblies will just get added to BundleAssemblies via _BundleNonAotAssemblies -->
<_AotIncludeAssemblies Condition="'$(RunAOTCompilation)' == 'true' and '$(AOTMode)' == 'JustInterp'" Include="$(PublishDir)System.Private.CoreLib.dll" />
<_AotIncludeAssemblies Condition="'$(RunAOTCompilation)' == 'true' and '$(AOTMode)' != 'JustInterp'" Include="$(PublishDir)*.dll" />

@ghost ghost locked as resolved and limited conversation to collaborators Aug 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants