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
* Initial interpreter wire-in
This change adds initial support for a new interpreter to coreclr. The
interpreter will have a compilation phase that generates an IR byte code
and will behave as a JIT. This change allows the runtime to understand
that the generated code is an interpreter IR and when runtime attempts
to execute such a method, it calls into the ExecuteInterpretedMethod.
This will call into the interpreter execution code once the actual
interpreter is merged in.
The change uses the StubPrecode and FixupPrecode as a mean to call the
InterpreterStub with a special register loaded with a pointer to the
IR byte code of the methods and TransitionFrame to get the arguments
from. So instead of MethodDesc, the stub data holds the IR address and
instead of the usual generated code target, it holds the
InterpreterStub. There is a small twist for FixupPrecode. This precode
has two parts ensuring that we load the MethodDesc into the special
register only at the first call when we need to know what method we are
going to compile. In follow up calls, it invokes the target directly
without loading that register. For interpreter, it is always kept in the
state of going through the register loading path so that the interpreter
execution knows what to run.
The plan is to use AltJit mechanism to load the interpreter during its
development. That allows us to interpret only a subset of the methods
and fall back to JIT for the ones we cannot interpret yet.
* Fix incorrect lookup for CodeHeader
Found by PR feedback, instead of InterpretedCodeAddressFlag, it was
using 1.
* Add new precode type for interpreter
* Put all interpreter related code under #ifdef
Also enable the interpreter in debug / checked builds only by default
* Fix OSX x64 build break
0 commit comments