gh-106529: Implement POP_JUMP_IF_XXX uops #106551
Merged
+181
−72
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds:
Hand-written uops
_POP_JUMP_IF_{TRUE,FALSE}
. These pop the top of the stack. The jump target (in superblock space) is absolute.Hand-written translation for
POP_JUMP_IF_{TRUE,FALSE}
, assuming the jump is unlikely. Once we implement jump-likelihood profiling, we can implement the jump-unlikely case.Note that the stubs are placed at the end of the trace array (and not counted in the return value of translate_bytecode_to_trace(), which is a bid dodgy). There is a gap between the main superblock and the stubs. We could close the gap, we'd just have to patch up the JUMP uops.
TODO in this PR:
TODO in a follow-up PR: