[Python-checkins] gh-91276: remove unused _PyOpcode_RelativeJump (#103156)
iritkatriel
webhook-mailer at python.org
Tue Apr 11 06:20:55 EDT 2023
https://github.com/python/cpython/commit/21bea68e2e97369d808db7d053d4b51b3bc761b9
commit: 21bea68e2e97369d808db7d053d4b51b3bc761b9
branch: main
author: Irit Katriel <1055913+iritkatriel at users.noreply.github.com>
committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com>
date: 2023-04-11T11:20:39+01:00
summary:
gh-91276: remove unused _PyOpcode_RelativeJump (#103156)
files:
M Include/internal/pycore_opcode.h
M Include/internal/pycore_opcode_utils.h
M Python/flowgraph.c
M Tools/build/generate_opcode_h.py
diff --git a/Include/internal/pycore_opcode.h b/Include/internal/pycore_opcode.h
index 81ca91465950..f5e9176a3e66 100644
--- a/Include/internal/pycore_opcode.h
+++ b/Include/internal/pycore_opcode.h
@@ -12,8 +12,6 @@ extern "C" {
#include "opcode.h"
-extern const uint32_t _PyOpcode_RelativeJump[9];
-
extern const uint32_t _PyOpcode_Jump[9];
extern const uint8_t _PyOpcode_Caches[256];
@@ -21,17 +19,6 @@ extern const uint8_t _PyOpcode_Caches[256];
extern const uint8_t _PyOpcode_Deopt[256];
#ifdef NEED_OPCODE_TABLES
-const uint32_t _PyOpcode_RelativeJump[9] = {
- 0U,
- 0U,
- 536870912U,
- 135020544U,
- 4163U,
- 0U,
- 0U,
- 0U,
- 48U,
-};
const uint32_t _PyOpcode_Jump[9] = {
0U,
0U,
diff --git a/Include/internal/pycore_opcode_utils.h b/Include/internal/pycore_opcode_utils.h
index 96bb4d743bf2..1d5ff988290b 100644
--- a/Include/internal/pycore_opcode_utils.h
+++ b/Include/internal/pycore_opcode_utils.h
@@ -8,7 +8,7 @@ extern "C" {
# error "this header requires Py_BUILD_CORE define"
#endif
-#include "pycore_opcode.h" // _PyOpcode_RelativeJump
+#include "pycore_opcode.h" // _PyOpcode_Jump
#define MAX_REAL_OPCODE 254
@@ -85,9 +85,6 @@ is_bit_set_in_table(const uint32_t *table, int bitindex) {
#undef LOG_BITS_PER_INT
#undef MASK_LOW_LOG_BITS
-#define IS_RELATIVE_JUMP(opcode) (is_bit_set_in_table(_PyOpcode_RelativeJump, opcode))
-
-
#ifdef __cplusplus
}
diff --git a/Python/flowgraph.c b/Python/flowgraph.c
index d97de0c58771..67cc5c5e88be 100644
--- a/Python/flowgraph.c
+++ b/Python/flowgraph.c
@@ -42,12 +42,6 @@ is_block_push(cfg_instr *i)
return IS_BLOCK_PUSH_OPCODE(i->i_opcode);
}
-static inline int
-is_relative_jump(cfg_instr *i)
-{
- return IS_RELATIVE_JUMP(i->i_opcode);
-}
-
static inline int
is_jump(cfg_instr *i)
{
@@ -199,8 +193,7 @@ blocksize(basicblock *b)
static void
dump_instr(cfg_instr *i)
{
- const char *jrel = (is_relative_jump(i)) ? "jrel " : "";
- const char *jabs = (is_jump(i) && !is_relative_jump(i))? "jabs " : "";
+ const char *jump = is_jump(i) ? "jump " : "";
char arg[128];
@@ -211,8 +204,8 @@ dump_instr(cfg_instr *i)
if (HAS_TARGET(i->i_opcode)) {
sprintf(arg, "target: %p [%d] ", i->i_target, i->i_oparg);
}
- fprintf(stderr, "line: %d, opcode: %d %s%s%s\n",
- i->i_loc.lineno, i->i_opcode, arg, jabs, jrel);
+ fprintf(stderr, "line: %d, opcode: %d %s%s\n",
+ i->i_loc.lineno, i->i_opcode, arg, jump);
}
static inline int
@@ -500,25 +493,20 @@ resolve_jump_offsets(basicblock *entryblock)
for (int i = 0; i < b->b_iused; i++) {
cfg_instr *instr = &b->b_instr[i];
int isize = _PyCfg_InstrSize(instr);
- /* Relative jumps are computed relative to
- the instruction pointer after fetching
- the jump instruction.
- */
+ /* jump offsets are computed relative to
+ * the instruction pointer after fetching
+ * the jump instruction.
+ */
bsize += isize;
if (is_jump(instr)) {
instr->i_oparg = instr->i_target->b_offset;
- if (is_relative_jump(instr)) {
- if (instr->i_oparg < bsize) {
- assert(IS_BACKWARDS_JUMP_OPCODE(instr->i_opcode));
- instr->i_oparg = bsize - instr->i_oparg;
- }
- else {
- assert(!IS_BACKWARDS_JUMP_OPCODE(instr->i_opcode));
- instr->i_oparg -= bsize;
- }
+ if (instr->i_oparg < bsize) {
+ assert(IS_BACKWARDS_JUMP_OPCODE(instr->i_opcode));
+ instr->i_oparg = bsize - instr->i_oparg;
}
else {
assert(!IS_BACKWARDS_JUMP_OPCODE(instr->i_opcode));
+ instr->i_oparg -= bsize;
}
if (_PyCfg_InstrSize(instr) != isize) {
extended_arg_recompile = 1;
diff --git a/Tools/build/generate_opcode_h.py b/Tools/build/generate_opcode_h.py
index 614b17df7409..12fdd3ac84b3 100644
--- a/Tools/build/generate_opcode_h.py
+++ b/Tools/build/generate_opcode_h.py
@@ -130,12 +130,10 @@ def main(opcode_py, outfile='Include/opcode.h', internaloutfile='Include/interna
for name, op in specialized_opmap.items():
fobj.write(DEFINE.format(name, op))
- iobj.write("\nextern const uint32_t _PyOpcode_RelativeJump[9];\n")
iobj.write("\nextern const uint32_t _PyOpcode_Jump[9];\n")
iobj.write("\nextern const uint8_t _PyOpcode_Caches[256];\n")
iobj.write("\nextern const uint8_t _PyOpcode_Deopt[256];\n")
iobj.write("\n#ifdef NEED_OPCODE_TABLES\n")
- write_int_array_from_ops("_PyOpcode_RelativeJump", opcode['hasjrel'], iobj)
write_int_array_from_ops("_PyOpcode_Jump", opcode['hasjrel'] + opcode['hasjabs'], iobj)
iobj.write("\nconst uint8_t _PyOpcode_Caches[256] = {\n")
More information about the Python-checkins
mailing list