Uh oh!
There was an error while loading. Please reload this page.
bpo-41463: Generate information about jumps from 'opcode.py' rather than duplicating it in 'compile.c' - #21714
Conversation
…te it in 'compile.c'
| int i_lineno; | ||
| }; | ||
| static int |
There was a problem hiding this comment.
| staticint | |
| staticinlineint |
| return (_PyOpcode_RelativeJump[opcode>>5]>>(opcode&31))&1; | ||
| } | ||
| static int |
There was a problem hiding this comment.
| staticint | |
| staticinlineint |
| is_relative_jump(struct instr *i) | ||
| { | ||
| int opcode = i->i_opcode; | ||
| return (_PyOpcode_RelativeJump[opcode>>5]>>(opcode&31))&1; |
There was a problem hiding this comment.
Can you define 5 and 31 as globals with a name (using #define or with static variables). That way this will read a bit better
pablogsal
left a comment
There was a problem hiding this comment.
Look great, I left some minor comments
| int oparg = inst->i_oparg; | ||
| int nextop = i+1 < bb->b_iused ? bb->b_instr[i+1].i_opcode : 0; | ||
| if (inst->i_jabs || inst->i_jrel) { | ||
| if (is_jump(inst)) { |
| static inline int | ||
| is_relative_jump(struct instr *i) | ||
| { | ||
| int opcode = i->i_opcode; |
There was a problem hiding this comment.
Apologies for insisting a bit but it still took me a minute to parse the expression to follow how the function is determining if is a relative jump. I would suggest to maybe add a comment here briefly explaining the process as someone with less context will certainly struggle
pablogsal
left a comment
There was a problem hiding this comment.
LGTM
I left a comment, feel free to address it before landing
…han duplicating it in 'compile.c' (pythonGH-21714) Generate information about jumps from 'opcode.py' rather than duplicate it in 'compile.c'
…han duplicating it in 'compile.c' (pythonGH-21714) Generate information about jumps from 'opcode.py' rather than duplicate it in 'compile.c'
The motivation for this PR is to avoid errors when modifying compile.c.
Setting the
i_jabsandi_jrelfields of every instruction is error prone and unnecessary.https://bugs.python.org/issue41463