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
Separate code manager for the interpreter (#112985)
* Separate code manager for the interpreter
This change adds a separate code manager for the interpreted code. Here
is an overview of the changes:
* A base class EECodeGenManager is extracted from the EEJitManager
* A new class InterpreterJitManager derived from the EECodeGenManager is
added and implemented.
* Similarly, a base class CEECodeGenInfo is extracted from the CEEJitInfo
* A new class CInterpreterJitInfo derived from the CEECodeGenInfo is added
and implemented
* The CodeHeader and RealCodeHeader became base classes and
JitCodeHeader, RealJitCodeHeader, InterpreterCodeHeader and
RealInterpreterCodeHeader were added. The CodeHeader derivates don't
add any extra data, the JitCodeHeader just provides the methods that
are needed to access Jit specific members of the RealJitCodeHeader.
* The UnsafeJitFunction is refactored so that the interpreter (if
enabled) is invoked first and then the AltJit / Jit ones are called.
* A new DOTNET_Interpreter, DOTNET_InterpreterPath and
DOTNET_InterpreterName env vars are added to match the existing AltJit
ones.
* Make the code headers independent
Make the jit and interpreter code headers independent
* Added missing #ifdef
* Fix MUSL build break
* Rework of the CodeHeader separation
The previous way was introducing 5% regression in all exception handling
microbenchmarks, this gets us back to the same perf as without any code
manager changes.
* PR feedback and some cleanup
* Fix Unix build failure
The clang doesn't do late parsing of the template code, so the helpers
cannot be in the .inl file as they reference some types that are not
defined yet at that point.
* Fix a bug
* Fix build break
* Add dummy ICodeManager derived InterpreterCodeManager
* Remove unused ICodeManager methods
* PR feedback
* PR feedback
* Refactored GC and EH info allocation
* Added Interpreter-TODO at some places
* Reverted some changes that were not needed anymore
* PR Feedback
* Get rid of some template usages by small refactoring
* Reflect feedback
Copy file name to clipboardexpand all lines: src/coreclr/inc/clrconfigvalues.h
+6
Original file line number
Diff line number
Diff line change
@@ -325,6 +325,12 @@ RETAIL_CONFIG_STRING_INFO(EXTERNAL_AltJitOs, W("AltJitOS"), "Sets target OS for
325
325
RETAIL_CONFIG_STRING_INFO(EXTERNAL_AltJitExcludeAssemblies, W("AltJitExcludeAssemblies"), "Do not use AltJit on this semicolon-delimited list of assemblies.")
326
326
#endif// defined(ALLOW_SXS_JIT)
327
327
328
+
#ifdefFEATURE_INTERPRETER
329
+
RETAIL_CONFIG_STRING_INFO(EXTERNAL_InterpreterName, W("InterpreterName"), "Primary interpreter to use")
330
+
CONFIG_STRING_INFO(INTERNAL_InterpreterPath, W("InterpreterPath"), "Full path to the interpreter to use")
331
+
RETAIL_CONFIG_STRING_INFO(EXTERNAL_Interpreter, W("Interpreter"), "Enables Interpreter and selectively limits it to the specified methods.")
0 commit comments