-
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
JIT: Allow initializing blocks without jump targets #93928
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue Details...and remove
|
CC @dotnet/jit-contrib, @AndyAyersMS @jakobbotsch PTAL. I decided to implement Jakob's suggestion of not doing checks during block initialization, and instead performing them when reading/writing the block's jump target. To do this, I had to refactor |
Failure looks like #48798 |
Looks ok to me, but I'll let @jakobbotsch approve if he's ok with this. |
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.
LGTM. Nit: now that the function is part of BasicBlock
you might consider just naming it BasicBlock::New
or something of the sort (and if you decide to do that, feel free to do it in a follow-up to avoid rerunning CI again)
I'll include the rename in the next PR. Thanks! |
...and remove BasicBlock::bbTempJumpDest, per discussion in dotnet#93415. We still assert the jump target is set appropriately whenever it is read/written, and in the majority of cases, we still initialize blocks with their jump kind and target set simultaneously. This change improves usability for the few edge cases (like in Compiler::impImportLeave) where a block's jump target isn't known at initialization.
...and remove
BasicBlock::bbTempJumpDest
, per discussion here in #93415. We still assert the jump target is set appropriately whenever it is read/written, and in the majority of cases, we still initialize blocks with their jump kind and target set simultaneously. This change improves usability for the few edge cases (like inCompiler::impImportLeave
) where a block's jump target isn't known at initialization.