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

CoreCLR Interpreter #112158

Open
35 tasks
BrzVlad opened this issue Feb 4, 2025 · 1 comment
Open
35 tasks

CoreCLR Interpreter #112158

BrzVlad opened this issue Feb 4, 2025 · 1 comment

Comments

@BrzVlad
Copy link
Member

BrzVlad commented Feb 4, 2025

This issue tracks required work and progress for the porting of the mono interpreter to CoreCLR. The end goal of this issue is to be able to run entire test suites in full interpreter mode (without any JIT/AOT) on desktop platforms (ex. arm64 linux). This issue will be updated on the fly as the implementation progresses.

M1 - basic compilation and interpreting support of a simple method

  • interp wire-in
  • interp executor in libcoreclr
  • interpreter runtime test

M2 - stress tests involving object manipulation

  • constant loads and unchecked binops
  • ldlocal/ldarg
  • static void calls
  • full var offset allocator
  • basic block formation and implementation of branch opcodes
  • newobj creation
  • field access opcodes
  • array support
  • indirect load/store opcodes
  • precise GC scanning and GC safepoints
  • conversion opcodes
  • valuetypes (locals, fields, ctor)
  • basic generics working ?
  • isinst/castclass
  • static fields

M3 - EH and interpreter calls

  • basic non exceptional path for try/finally/leave
  • exception throw support and resume to correct handler clause
  • implement invocation of finally/filter clauses from EH
  • null checks and ovf opcodes
  • interp virtual call support
  • interp interface call support
  • direct calls to non-interp code

M4 - mixing with compiled code

  • figure out separation between interp/jit/R2R code for testing purposes
  • calli and ldftn with interpreter target method
  • calli and ldftn with jitted target method
  • delegate creation and invocation with interpreter target method
  • other delegate scenarios, passing it between interp/jit with either interpreted or jitted target method
  • box/unbox

M5 - pinvoke support, full interpreter support for Hello World

  • implement pinvoke support
  • implement reverse pinvoke support
  • bugfixes and feature support for Console.WriteLine("Hello World") in full interpreter mode

M6 - library tests and runtime tests

  • bugfixes and feature support for test suites
@BrzVlad BrzVlad added this to the 10.0.0 milestone Feb 4, 2025
@BrzVlad BrzVlad self-assigned this Feb 4, 2025
Copy link
Contributor

Tagging subscribers to this area: @BrzVlad, @kotlarmilos
See info in area-owners.md if you want to be subscribed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant