-
Notifications
You must be signed in to change notification settings - Fork 5.2k
[interp] Some cleanups and fixes for CLR interpreter #117610
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
Conversation
cc @jkotas thank you for pointing out the issue with the use of a tag bit for helpers. this should remove it |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements cleanups and fixes for the CLR interpreter focused on improving portability and removing unused functionality. The changes eliminate the use of tag bits for helper function indirection (which is not portable) and remove the GC.Collect intrinsic.
Key changes include:
- Replacing tag-bit based helper function resolution with a structured approach using
InterpHelperData
- Removing the
INTOP_GC_COLLECT
instruction and related intrinsic handling - Updating instruction lengths and data layouts to accommodate the new helper data structure
Reviewed Changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
src/coreclr/vm/interpexec.cpp | Replaces GetPossiblyIndirectHelper implementation and removes GC.Collect instruction handling |
src/coreclr/interpreter/intops.def | Updates instruction lengths for helper-related opcodes and removes GC_COLLECT opcode |
src/coreclr/interpreter/interpretershared.h | Defines new InterpHelperData structure and removes tag bit constant |
src/coreclr/interpreter/compiler.h | Updates method signature for helper function data population |
src/coreclr/interpreter/compiler.cpp | Implements new helper data population logic and updates debug printing |
Significantly revised based on vlad and jkotas's feedback. |
Checkpoint: Partial removal of tagged helper functions Update ip[] in interpexec side for helper data change Update compiler side for helper indirect tag bit removal Update opcode lengths Cleanup Address copilot review comment Speculative removal of fixme Remove INTOP_FAILFAST Add message to default opcode assert Fix Object.ctor intrinsic eating newobj opcodes Test debugging Checkpoint: Partial revert Repair revert Remove EmitCallIntrinsics Comment out broken check Repair merge damage Test debugging Remove incorrect zeroing of dreg in NEWOBJ_VT Revert diagnostic test changes Prevent newobj dvar from overlapping svars
/ba-g #117669 |
Uh oh!
There was an error while loading. Please reload this page.