This repository has been archived by the owner on Jan 23, 2024. It is now read-only.
fix: address some cases where jumps were not being updated #83
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.
In Python 3.10, due to the fact that jump instruction arguments have changed from byte offsets to instruction offsets, in some cases the jumps will not be updated because it is not noticed that their jump targets are being moved.
Consider the following example:
Adding a breakpoint on line 40 will insert the breakpoint code between the
POP_JUMP_IF_FALSE
and its target:Note that the
POP_JUMP_IF_FALSE
target is not updated, and is pointing to the wrong instruction. This is because the argument is 12, which is incorrectly interpretted as the memory offset and thus is jumping to a code location that has not been moved.The correct bytecode to generate is as follows: