Skip to content
This repository has been archived by the owner on Mar 15, 2022. It is now read-only.

Support calls that require virtual stub dispatch. #267

Closed
pgavlin opened this issue Mar 10, 2015 · 6 comments
Closed

Support calls that require virtual stub dispatch. #267

pgavlin opened this issue Mar 10, 2015 · 6 comments

Comments

@pgavlin
Copy link
Contributor

pgavlin commented Mar 10, 2015

VSD requires a special calling convention that places the target stub in a target-specific register.

@AndyAyersMS
Copy link
Member

@pgavlin Can you link (if possible) to the part of the CoreCLR that describes what we need to do? I looked for something and it wasn't obvious to me.

@pgavlin
Copy link
Contributor Author

pgavlin commented Mar 10, 2015

The closest thing to documentation that I can find is the definition of the VSD stub itself.

Also relevant:

@pgavlin
Copy link
Contributor Author

pgavlin commented Mar 10, 2015

Also, the code in RyuJIT that seems to deal with this is here.

@AndyAyersMS
Copy link
Member

Great, thanks. Looks like there are (at least) two other cases like this where some magic bits are passed in R11 and we have to handle a non-standard calling convention.

@pgavlin
Copy link
Contributor Author

pgavlin commented Mar 12, 2015

@AndyAyersMS It looks like this supporting this will require changes to LLVM. The easiest way to get this done appears to be to add a custom calling convention (I can't see any other straightforward way to place a particular value in a particular register), which AFAICT must be done by updating the various *CallingConv.td files.

@AndyAyersMS
Copy link
Member

Completed via 87ee4e6 and matching changes over in LLVM.

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