You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* JIT/AOT to interpreter calls support
Until now, we only had support for calling interpreted void returning
method with no arguments by the JIT/AOT. This change enables support for
passing all possible kinds of arguments and returning all types.
It reuses the `CallStubGenerator` that was implemented for the interpreter
to native code usage and adds support for the other direction to it in
mostly trivial manner.
In addition to that, assembler routines for storing argument values to
the interpreter stack were added.
The `CallStubGenerator` generates a list of routines to copy the
arguments from CPU registers and stack to the interpreter stack.
The last one makes call to the `ExecuteInterpretedMethod` and then puts
the result into appropriate registers.
For functions that return result via a return buffer, the buffer is
passed to the `ExecuteInterpretedMethod` so that the IR opcode to return
valuetype stores it directly to the return buffer.
The ARM64 for Apple OSes is the most optimized version, as it is the
primary target where the performance matters the most. It eliminates
argument registers saving to stack on the fast path when we already have
the call stub.
* Fix m_pInterpThreadContext offset after rebase to main
* Fix m_pInterpThreadContext for more targets
* Move the CreateNativeToInterpreterCallStub to prestub
* Fix build break and add a comment
* Create stub only when interp. method called from JIT/AOT code
* Unify some asm macros
* Update src/coreclr/pal/inc/unixasmmacrosamd64.inc
* Fix OSX x64 build
---------
Co-authored-by: Jan Kotas <[email protected]>
0 commit comments