Skip to content

[do-not-merge] ARM64_32 changes - #5418

Closed
lewurm wants to merge 10 commits into
dotnet:masterfrom
lewurm:watch4
Closed

[do-not-merge] ARM64_32 changes#5418
lewurm wants to merge 10 commits into
dotnet:masterfrom
lewurm:watch4

Conversation

@lewurm

@lewurm lewurm commented Jan 16, 2019

Copy link
Copy Markdown
Contributor

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
@lewurm
lewurm requested a review from rolfbjarne January 16, 2019 10:48
@monojenkins

Copy link
Copy Markdown
Contributor

Build failure
Build was aborted

🔥 Build failed 🔥

@spouliot

Copy link
Copy Markdown
Contributor

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

Comment thread tools/mtouch/mtouch.cs
} 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
Copy Markdown
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,"); }

Comment thread tools/mtouch/mtouch.cs
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
Copy Markdown
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

lewurm commented Jan 16, 2019

Copy link
Copy Markdown
Contributor Author

@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
Copy Markdown
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
Copy Markdown
Member

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

@lewurm

lewurm commented Mar 11, 2019

Copy link
Copy Markdown
Contributor Author

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