Our new DSL can express variadic stack effects using array[oparg] and even caters for conditions (foo if (C-expression)). But four opcodes (SEND, JUMP_IF_FALSE_OR_POP, JUMP_IF_TRUE_OR_POP, FOR_ITER) have different stack effects depending on whether they jump. How should we express that? New syntax or a magic constant in C-expression above?
The short term answer is "don't worry about". It is simple enough to workaround in the tooling for now.
In the longer term we'll need to add JUMP_AND_POP() macros (or something like that) to complement the JUMPBY() macros we currently have. Plus the tools will need to understand these macros.
Activity
markshannon commented on Oct 17, 2022
The short term answer is "don't worry about". It is simple enough to workaround in the tooling for now.
In the longer term we'll need to add JUMP_AND_POP() macros (or something like that) to complement the JUMPBY() macros we currently have. Plus the tools will need to understand these macros.
gvanrossum commented on Nov 8, 2022
I suppose we could just special-case an output stack effect of the form res if (jump) or res if (!jump).
iritkatriel commented on Mar 6, 2023
I think this is resolved.