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
The IL endfault opcode is an alias for endfinally. The JIT imports this as a BBJ_EHFINALLYRET BasicBlock type. It would be helpful to distinguish the block types so as not to require consulting the EH table when examining the block type to determine which type of EH handler we are in.
So, consider adding a BBJ_EHFAULTRET BasicBlock type and using it for exits from a fault region.
The text was updated successfully, but these errors were encountered:
The IL endfault opcode is an alias for endfinally. The JIT imports this as a BBJ_EHFINALLYRET BasicBlock type. It would be helpful to distinguish the block types so as not to require consulting the EH table when examining the block type to determine which type of EH handler we are in.
So, consider adding a BBJ_EHFAULTRET BasicBlock type and using it for exits from a fault region.
The IL `endfinally` and `endfault` instructions are aliases,
imported in the JIT IR as `BBJ_EHFINALLYRET`.
Introduce `BBJ_EHFAULTRET` for cases within `fault` clauses.
This simplifies some code, and makes it more clear when writing
code that `fault` clauses need to be considered, separately from
`finally` clauses.
To do this, after importing EH clauses, convert any `BBJ_EHFINALLYRET`
as necessary. Also, try/finally cloning, which (sometimes) converts
`finally` clauses to `fault` clauses, needs to update the corresponding
`BBJ_EHFINALLYRET`. When creating new try/fault clauses for synchronized
functions, use `BBJ_EHFAULTRET` now.
Fixesdotnet#84307
The IL `endfinally` and `endfault` instructions are aliases,
imported in the JIT IR as `BBJ_EHFINALLYRET`.
Introduce `BBJ_EHFAULTRET` for cases within `fault` clauses.
This simplifies some code, and makes it more clear when writing
code that `fault` clauses need to be considered, separately from
`finally` clauses.
To do this, after importing EH clauses, convert any `BBJ_EHFINALLYRET`
as necessary. Also, try/finally cloning, which (sometimes) converts
`finally` clauses to `fault` clauses, needs to update the corresponding
`BBJ_EHFINALLYRET`. When creating new try/fault clauses for synchronized
functions, use `BBJ_EHFAULTRET` now.
Fixes#84307
ghost
locked as resolved and limited conversation to collaborators
May 8, 2023
# for freeto subscribe to this conversation on GitHub.
Already have an account?
#.
Labels
area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
The IL
endfault
opcode is an alias forendfinally
. The JIT imports this as aBBJ_EHFINALLYRET
BasicBlock type. It would be helpful to distinguish the block types so as not to require consulting the EH table when examining the block type to determine which type of EH handler we are in.So, consider adding a
BBJ_EHFAULTRET
BasicBlock type and using it for exits from afault
region.The text was updated successfully, but these errors were encountered: