summaryrefslogtreecommitdiffstats
path: root/Misc
diff options
context:
space:
mode:
Diffstat (limited to 'Misc')
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2022-08-26-18-46-32.gh-issue-93554.QEaCcK.rst16
1 files changed, 16 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-08-26-18-46-32.gh-issue-93554.QEaCcK.rst b/Misc/NEWS.d/next/Core and Builtins/2022-08-26-18-46-32.gh-issue-93554.QEaCcK.rst
new file mode 100644
index 0000000..dff12ae
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-08-26-18-46-32.gh-issue-93554.QEaCcK.rst
@@ -0,0 +1,16 @@
+Change the jump opcodes so that all conditional jumps are forward jumps.
+Backward jumps are converted by the assembler into a conditional forward
+jump whose target is the fallthrough block (and with a reversed condition),
+followed by an unconditional backward jump. For example:
+
+``POP_JUMP_IF_TRUE BACKWARD_TARGET`` becomes ``POP_JUMP_IF_FALSE NEXT_BLOCK;
+JUMP BACKWARD_TARGET``.
+
+All the directed conditional jump opcodes were removed:
+``POP_JUMP_FORWARD_IF_TRUE``, ``POP_JUMP_BACKWARD_IF_TRUE``,
+``POP_JUMP_FORWARD_IF_FALSE``, ``POP_JUMP_BACKWARD_IF_FALSE``,
+``POP_JUMP_FORWARD_IF_NONE``, ``POP_JUMP_BACKWARD_IF_NONE``,
+``POP_JUMP_FORWARD_IF_NOT_NONE``, ``POP_JUMP_BACKWARD_IF_NOT_NONE``.
+
+The corresponding opcodes without direction are no longer pseudo-instructions,
+and they implement the forward conditional jumps.