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

Status and incomplete fat Precode pointer. #2780

Open
wants to merge 2 commits into
base: feature/CoreclrInterpreter
Choose a base branch
from

Conversation

AaronRobinsonMSFT
Copy link
Member

Update status document.
Incomplete fat pointer implementation using Precode.

Incomplete fat pointer implementation using Precode.
@AaronRobinsonMSFT
Copy link
Member Author

/cc @janvorli @cshung

@@ -42,6 +42,11 @@ StackCopyLoop: ; copy the arguments to stack top-down t

mov rax, [rbx + CallDescrData__dwRegTypeMap] ; save the reg (arg) type map

; Store stub context
cmp QWORD PTR [rbx + CallDescrData__pStubContextMD], 0
jz NoStubContext
Copy link
Member

Choose a reason for hiding this comment

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

I wonder if it would be a problem to load the r10 unconditionally here since r10 is volatile.

Copy link
Member Author

Choose a reason for hiding this comment

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

How do we know that r10 is volatile in this case? I'm hoping we can simply avoid stub sharing in interpreter scenarios.

Copy link
Member

Choose a reason for hiding this comment

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

The r10 is volatile in both the windows and unix x64 calling convention. And this function is only called from native runtime code, so there is no case when a special calling convention extension that we use for some stubs could expect r10 to be preserved.

Copy link
Member Author

Choose a reason for hiding this comment

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

Oh! You mean volatile in the calling convention sense, not volatile in the memory sense. Yes, I think we can unconditionally play with r10. I added the check just in case it was needed by another scenario that I didn't know about.

src/coreclr/vm/jitinterface.cpp Show resolved Hide resolved
src/coreclr/vm/callhelpers.cpp Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants