-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Tiered jitting: Review/fix ICorDebug interactions #8481
Comments
About race conditions: maybe it's easier to not replace code while someone is inside? Just create a gate, and if method is recompiled, we redirect all new calls to stub. When all calls left method which is about to recompile we replace it and new calls pass through this stub and resume their work. |
In my example above it is already the case that no thread is executing inside Bar when it is replaced : ) However the main thorny issue is that trying to track thread entry/exit adds performance overhead to every method invocation. We want to try pretty hard to keep that overhead to the bare minimum. |
Breaking this down into multiple issues: |
dotnet/coreclr#14421 |
dotnet/coreclr#14423 |
dotnet/coreclr#14426 |
dotnet/coreclr#14427 |
dotnet/coreclr#14428 |
All of the known sub-issues have been resolved, work complete! |
PR dotnet/coreclr#12193 - took an initial stab at this but it is incomplete. We need to:
A correct implementation would need to replicate some of the breakpoints from version 1 to version 2 prior to the new version being published. Breakpoints that are tracked in the runtime by IL offset are probably correctly applied already, but those that are tracked by native offset aren't. Breakpoints used for stepping as above are one example of that class.
Note: Despite excluding debuggable code-gen from getting tiered, the debugger/ICorDebug API is not restricted to only operate on debuggable code. Stepping may skip around a bit more erratically in retail code, but failing to stop doesn't seem reasonable.
The text was updated successfully, but these errors were encountered: