GH-128375: Better instrument for FOR_ITER#128445
Merged
markshannon merged 9 commits intopython:mainfrom Jan 6, 2025
Merged
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 PR:
POP_TOPand the end of aforloop toPOP_ITER(it pops the iterator)NOT_TAKENfollowingFOR_ITERand instruments theFOR_ITERandPOP_ITERinsteadEXTENDED_ARGSinco_branches().The last one isn't strictly related to the issue, but came up while fixing the main issue.
Changing the instrumentation pattern has two effects:
NOT_TAKEN) per iteration, at the cost of one additional dispatch when the loop is exited.DISABLEd, theFOR_ITERcan be specialized and jitted.Performance is neutral on the standard benchmarks for tier1, as expected.
FOR_ITERis poor asDISABLEdoesn't remove the instrumentation. #128375