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

Teach coreclr/src/tools about Checked configuration #144

Closed

Conversation

MichalStrehovsky
Copy link
Member

Just want to run the CI on this.

We actually had some issues found by this (#142), but I don't want to kill my machine for 2 hours to run all tests we have. This should come through as dotnet/runtime#43017.

@MichalStrehovsky MichalStrehovsky added area-NativeAOT-coreclr .NET runtime optimized for ahead of time compilation * NO MERGE * The PR is not ready for merge yet (see discussion for detailed reasons) labels Oct 5, 2020
@MichalStrehovsky
Copy link
Member Author

/azp run runtimelab-nativeaot Pri-0 Tests

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

MichalStrehovsky added a commit that referenced this pull request Oct 6, 2020
This test is asserting in #144. Not interested in debugging why since it's covariant returns.
@MichalStrehovsky MichalStrehovsky deleted the checked branch October 6, 2020 12:38
MichalStrehovsky added a commit that referenced this pull request Oct 6, 2020
This test is asserting in #144. Not interested in debugging why since it's covariant returns.
runtimelab-bot pushed a commit that referenced this pull request May 23, 2022
This adds support for EnC on arm64. A couple of notes on the
implementation compared to x64:
- On x64 we get the fixed stack size from unwind info. However, for the
  frames we set up on arm64 for EnC it is not possible to extract the
  frame size from there because their prologs generally look like

  stp fp, lr, [sp,#-16]!
  mov fp, sp
  sub sp, sp, #144

  with unwind codes like the following:

  set_fp; mov fp, sp

  save_fplr_x #1 (0x01); tp fp, lr, [sp, #-16]!

  As can be seen, it is not possible to get the fixed stack size from
  unwind info in this case. Instead we pass it through the GC info that
  already has a section for EnC data.

- On arm64 the JIT is required to place the PSPSym at the same offset
  from caller-SP for both the main function and for funclets. Due to
  this we try to allocate the PSPSym as early as possible in the main
  function and we must take some care in funclets.  However, this
  conflicts with the EnC frame header that the JIT uses to place values
  that must be preserved on EnC transitions. This is currently
  callee-saved registers and the MonitorAcquired boolean.

  Before this change we were allocating PSPSym above (before) the
  monitor acquired boolean, but we now have to allocate MonitorAcquired
  first, particularly because the size of the preserved header cannot
  change on EnC transitions, while the PSPSym can disappear or appear.
  This changes frame allocation slightly for synchronized functions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-NativeAOT-coreclr .NET runtime optimized for ahead of time compilation * NO MERGE * The PR is not ready for merge yet (see discussion for detailed reasons)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant