summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2023-06-17 16:00:16 (GMT)
committerGitHub <noreply@github.com>2023-06-17 16:00:16 (GMT)
commit14d01262dad02579b3dffe5965f640ce21c38896 (patch)
treed3e4dc72599c95f5dc3b3dd7eec5a1f4f3d673b0 /Python
parent34e93d3998bab8acd651c50724eb1977f4860a08 (diff)
downloadcpython-14d01262dad02579b3dffe5965f640ce21c38896.zip
cpython-14d01262dad02579b3dffe5965f640ce21c38896.tar.gz
cpython-14d01262dad02579b3dffe5965f640ce21c38896.tar.bz2
gh-105481: remove HAS_ARG, HAS_CONST, IS_JUMP_OPCODE, IS_PSEUDO_OPCODE and replace by their new versions (#105865)
Diffstat (limited to 'Python')
-rw-r--r--Python/assemble.c3
-rw-r--r--Python/ceval.c5
-rw-r--r--Python/compile.c17
-rw-r--r--Python/flowgraph.c21
4 files changed, 19 insertions, 27 deletions
diff --git a/Python/assemble.c b/Python/assemble.c
index 85c6fe7..d6213f8 100644
--- a/Python/assemble.c
+++ b/Python/assemble.c
@@ -339,10 +339,9 @@ static void
write_instr(_Py_CODEUNIT *codestr, instruction *instr, int ilen)
{
int opcode = instr->i_opcode;
- assert(IS_PSEUDO_OPCODE(opcode) == IS_PSEUDO_INSTR(opcode));
assert(!IS_PSEUDO_INSTR(opcode));
int oparg = instr->i_oparg;
- assert(HAS_ARG(opcode) || oparg == 0);
+ assert(OPCODE_HAS_ARG(opcode) || oparg == 0);
int caches = _PyOpcode_Caches[opcode];
switch (ilen - caches) {
case 4:
diff --git a/Python/ceval.c b/Python/ceval.c
index b628190..b1ac4de 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -29,6 +29,7 @@
#include "pycore_frame.h"
#include "frameobject.h" // _PyInterpreterFrame_GetLine
#include "opcode.h"
+#include "opcode_metadata.h"
#include "pydtrace.h"
#include "setobject.h"
#include "structmember.h" // struct PyMemberDef, T_OFFSET_EX
@@ -141,7 +142,7 @@ lltrace_instruction(_PyInterpreterFrame *frame,
const char *opname = _PyOpcode_OpName[opcode];
assert(opname != NULL);
int offset = (int)(next_instr - _PyCode_CODE(_PyFrame_GetCode(frame)));
- if (HAS_ARG((int)_PyOpcode_Deopt[opcode])) {
+ if (OPCODE_HAS_ARG((int)_PyOpcode_Deopt[opcode])) {
printf("%d: %s %d\n", offset * 2, opname, oparg);
}
else {
@@ -882,7 +883,7 @@ handle_eval_breaker:
#if USE_COMPUTED_GOTOS
_unknown_opcode:
#else
- EXTRA_CASES // From opcode.h, a 'case' for each unused opcode
+ EXTRA_CASES // From pycore_opcode.h, a 'case' for each unused opcode
#endif
/* Tell C compilers not to hold the opcode variable in the loop.
next_instr points the current instruction without TARGET(). */
diff --git a/Python/compile.c b/Python/compile.c
index afb7b7d..cfa945b 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -134,9 +134,8 @@ enum {
int
_PyCompile_InstrSize(int opcode, int oparg)
{
- assert(IS_PSEUDO_OPCODE(opcode) == IS_PSEUDO_INSTR(opcode));
assert(!IS_PSEUDO_INSTR(opcode));
- assert(HAS_ARG(opcode) || oparg == 0);
+ assert(OPCODE_HAS_ARG(opcode) || oparg == 0);
int extended_args = (0xFFFFFF < oparg) + (0xFFFF < oparg) + (0xFF < oparg);
int caches = _PyOpcode_Caches[opcode];
return extended_args + 1 + caches;
@@ -248,15 +247,9 @@ instr_sequence_use_label(instr_sequence *seq, int lbl) {
static int
instr_sequence_addop(instr_sequence *seq, int opcode, int oparg, location loc)
{
- /* compare old and new opcode macros - use ! to compare as bools. */
- assert(!HAS_ARG(opcode) == !OPCODE_HAS_ARG(opcode));
- assert(!HAS_CONST(opcode) == !OPCODE_HAS_CONST(opcode));
- assert(!OPCODE_HAS_JUMP(opcode) == !OPCODE_HAS_JUMP(opcode));
-
assert(0 <= opcode && opcode <= MAX_OPCODE);
- assert(IS_PSEUDO_OPCODE(opcode) == IS_PSEUDO_INSTR(opcode));
assert(IS_WITHIN_OPCODE_RANGE(opcode));
- assert(HAS_ARG(opcode) || HAS_TARGET(opcode) || oparg == 0);
+ assert(OPCODE_HAS_ARG(opcode) || HAS_TARGET(opcode) || oparg == 0);
assert(0 <= oparg && oparg < (1 << 30));
int idx = instr_sequence_next_inst(seq);
@@ -874,7 +867,7 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
static int
codegen_addop_noarg(instr_sequence *seq, int opcode, location loc)
{
- assert(!HAS_ARG(opcode));
+ assert(!OPCODE_HAS_ARG(opcode));
assert(!IS_ASSEMBLER_OPCODE(opcode));
return instr_sequence_addop(seq, opcode, 0, loc);
}
@@ -1151,7 +1144,7 @@ codegen_addop_j(instr_sequence *seq, location loc,
}
#define ADDOP_N(C, LOC, OP, O, TYPE) { \
- assert(!HAS_CONST(OP)); /* use ADDOP_LOAD_CONST_NEW */ \
+ assert(!OPCODE_HAS_CONST(OP)); /* use ADDOP_LOAD_CONST_NEW */ \
if (compiler_addop_o((C)->u, (LOC), (OP), (C)->u->u_metadata.u_ ## TYPE, (O)) < 0) { \
Py_DECREF((O)); \
return ERROR; \
@@ -7798,7 +7791,7 @@ instructions_to_instr_sequence(PyObject *instructions, instr_sequence *seq)
goto error;
}
int oparg;
- if (HAS_ARG(opcode)) {
+ if (OPCODE_HAS_ARG(opcode)) {
oparg = PyLong_AsLong(PyTuple_GET_ITEM(item, 1));
if (PyErr_Occurred()) {
goto error;
diff --git a/Python/flowgraph.c b/Python/flowgraph.c
index de5c5e7..39f780e 100644
--- a/Python/flowgraph.c
+++ b/Python/flowgraph.c
@@ -45,14 +45,13 @@ is_block_push(cfg_instr *i)
static inline int
is_jump(cfg_instr *i)
{
- assert(!OPCODE_HAS_JUMP(i->i_opcode) == !IS_JUMP_OPCODE(i->i_opcode));
return OPCODE_HAS_JUMP(i->i_opcode);
}
/* One arg*/
#define INSTR_SET_OP1(I, OP, ARG) \
do { \
- assert(HAS_ARG(OP)); \
+ assert(OPCODE_HAS_ARG(OP)); \
_PyCfgInstruction *_instr__ptr_ = (I); \
_instr__ptr_->i_opcode = (OP); \
_instr__ptr_->i_oparg = (ARG); \
@@ -61,7 +60,7 @@ is_jump(cfg_instr *i)
/* No args*/
#define INSTR_SET_OP0(I, OP) \
do { \
- assert(!HAS_ARG(OP)); \
+ assert(!OPCODE_HAS_ARG(OP)); \
_PyCfgInstruction *_instr__ptr_ = (I); \
_instr__ptr_->i_opcode = (OP); \
_instr__ptr_->i_oparg = 0; \
@@ -111,7 +110,7 @@ basicblock_addop(basicblock *b, int opcode, int oparg, location loc)
{
assert(IS_WITHIN_OPCODE_RANGE(opcode));
assert(!IS_ASSEMBLER_OPCODE(opcode));
- assert(HAS_ARG(opcode) || HAS_TARGET(opcode) || oparg == 0);
+ assert(OPCODE_HAS_ARG(opcode) || HAS_TARGET(opcode) || oparg == 0);
assert(0 <= oparg && oparg < (1 << 30));
int off = basicblock_next_instr(b);
@@ -193,7 +192,7 @@ dump_instr(cfg_instr *i)
char arg[128];
*arg = '\0';
- if (HAS_ARG(i->i_opcode)) {
+ if (OPCODE_HAS_ARG(i->i_opcode)) {
sprintf(arg, "arg: %d ", i->i_oparg);
}
if (HAS_TARGET(i->i_opcode)) {
@@ -1108,7 +1107,7 @@ static PyObject*
get_const_value(int opcode, int oparg, PyObject *co_consts)
{
PyObject *constant = NULL;
- assert(HAS_CONST(opcode));
+ assert(OPCODE_HAS_CONST(opcode));
if (opcode == LOAD_CONST) {
constant = PyList_GET_ITEM(co_consts, oparg);
}
@@ -1139,7 +1138,7 @@ fold_tuple_on_constants(PyObject *const_cache,
assert(inst[n].i_oparg == n);
for (int i = 0; i < n; i++) {
- if (!HAS_CONST(inst[i].i_opcode)) {
+ if (!OPCODE_HAS_CONST(inst[i].i_opcode)) {
return SUCCESS;
}
}
@@ -1542,8 +1541,8 @@ optimize_basic_block(PyObject *const_cache, basicblock *bb, PyObject *consts)
}
break;
default:
- /* All HAS_CONST opcodes should be handled with LOAD_CONST */
- assert (!HAS_CONST(inst->i_opcode));
+ /* All OPCODE_HAS_CONST opcodes should be handled with LOAD_CONST */
+ assert (!OPCODE_HAS_CONST(inst->i_opcode));
}
}
@@ -1793,7 +1792,7 @@ remove_unused_consts(basicblock *entryblock, PyObject *consts)
/* mark used consts */
for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
for (int i = 0; i < b->b_iused; i++) {
- if (HAS_CONST(b->b_instr[i].i_opcode)) {
+ if (OPCODE_HAS_CONST(b->b_instr[i].i_opcode)) {
int index = b->b_instr[i].i_oparg;
index_map[index] = index;
}
@@ -1846,7 +1845,7 @@ remove_unused_consts(basicblock *entryblock, PyObject *consts)
for (basicblock *b = entryblock; b != NULL; b = b->b_next) {
for (int i = 0; i < b->b_iused; i++) {
- if (HAS_CONST(b->b_instr[i].i_opcode)) {
+ if (OPCODE_HAS_CONST(b->b_instr[i].i_opcode)) {
int index = b->b_instr[i].i_oparg;
assert(reverse_index_map[index] >= 0);
assert(reverse_index_map[index] < n_used_consts);