-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Unify SEH wrapping for method calls in the interpexec.cpp #121311
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
Unify SEH wrapping for method calls in the interpexec.cpp #121311
Conversation
This change adds a templated way to wrap any method call in a SEH exception try / catch. Until now, we were adding a new function for each case that needed this wrapping.
|
Tagging subscribers to this area: @BrzVlad, @janvorli, @kg |
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 refactors exception handling for method calls in the interpreter by introducing a generic CallWithSEHWrapper template function to replace specialized wrapper functions (CallPreStub and CallGetMethodDescOfVirtualizedCode). This consolidates duplicate SEH exception handling logic into a single reusable template.
- Replaced two specialized SEH wrapper functions with a single generic template
- Updated all call sites to use the new generic wrapper
- Consolidated duplicate exception handling logic
|
Hmm, the new version breaks the interpreter test, I am investigating ... |
|
Ah, copy and paste error for the GetMethodDescOfVirtualizedCode |
Fix copy and paste error
Removed the CallGetMethodDescOfVirtualizedCode function, which is now a dead code.
Fix arguments
|
/ba-g infra issues and failures unrelated to the change |
This change adds a way to wrap any method call in a SEH exception try / catch. Until now, we were adding a new function for each case that needed this wrapping.
I've verified that the generated code in the release build is the same as before this change.