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

[do-not-merge] ARM64_32 changes #5418

Closed
wants to merge 10 commits into from
Closed

[do-not-merge] ARM64_32 changes #5418

wants to merge 10 commits into from

Conversation

lewurm
Copy link
Contributor

@lewurm lewurm commented Jan 16, 2019

Consider this a preview of the changes required to get ARM64_32 going, the architecture introduced with the Watch Series 4. This approach uses the armv7k AOT compiler, and then links the runtime built for arm64_32. This works because the AOT compiler emits bitcode and the ABI of armv7k and arm64_32 are "offset compatible". The caveat is that it only works for the Release mode, but that should be enough to unblock us for the March 2019 deadline.

I'm planning to land the relevant mono changes in 2018-10 (see https://github.com/lewurm/mono/commits/2018-08-watch4). For the changes on the xamarin-macios, I'll cherry-pick some of them to master and some I'll open against the mono-2018-10 integration branch. The changes in build/Makefile will need some more polishing. The xharness changes are quite a hack, it should rather be a different platform target (similar to target32/target64 on iOS), but I didn't get that to work.

Context: mono/mono#10641

Edit: "pics or it didn't happen"

screenshot 2019-01-15 at 23 18 38

@lewurm lewurm added the do-not-merge Do not merge this pull request label Jan 16, 2019
@monojenkins
Copy link
Collaborator

Build failure
Build was aborted

🔥 Build failed 🔥

@spouliot
Copy link
Contributor

You mention both 2018-10 and 2018-08-watch4 which seems (or should) differ ?

args.Append ("llvmonly,");
else if (interp) {
} else if (interp) {
if (fname != "mscorlib.dll")
throw ErrorHelper.CreateError (99, $"Internal error: can only enable the interpreter for mscorlib.dll when AOT-compiling assemblies (tried to interpret {fname}). Please file an issue at https://github.com/xamarin/xamarin-macios/issues/new.");
args.Append ("interp,");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adding the same value in multiple place makes things harder to understand (and easier to miss when updating).
I think you can have a single if (interp) { args.Append ("interp,"); }

sw.WriteLine ("\tmono_method_builder_ilgen_init ();");
sw.WriteLine ("\tmono_sgen_mono_ilgen_init ();");
sw.WriteLine ("\tmono_ee_interp_init (NULL);");
sw.WriteLine ("\tmono_jit_set_aot_mode (MONO_AOT_MODE_INTERP_LLVMONLY);");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same, too easy to forget to update the (mostly) identical generated code.

@lewurm
Copy link
Contributor Author

lewurm commented Jan 16, 2019

@spouliot my prototype is based on 2018-08 (hence the branch name 2018-08-watch4), but I'm going to land the changes for 2018-10 because it's a bit late for 2018-08.

@spouliot
Copy link
Contributor

@lewurm talk with @chamons first. We do not have any date (including preview dates) for 16.1 release - i.e. next time we can take a newer mono.

@rolfbjarne rolfbjarne self-assigned this Jan 17, 2019
@rolfbjarne
Copy link
Member

I'll have a look at the required xharness changes.

@lewurm
Copy link
Contributor Author

lewurm commented Mar 11, 2019

closing in favor of #5465

@lewurm lewurm closed this Mar 11, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
do-not-merge Do not merge this pull request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants