summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2024-07-26 11:24:12 (GMT)
committerGitHub <noreply@github.com>2024-07-26 11:24:12 (GMT)
commitafb0aa6ed20bd8e982ecb307f12923cf8dbccd8c (patch)
tree222f3075796f8167442bcc744c52efe3c7c8eaa5 /Include
parentd9efa45d7457b0dfea467bb1c2d22c69056ffc73 (diff)
downloadcpython-afb0aa6ed20bd8e982ecb307f12923cf8dbccd8c.zip
cpython-afb0aa6ed20bd8e982ecb307f12923cf8dbccd8c.tar.gz
cpython-afb0aa6ed20bd8e982ecb307f12923cf8dbccd8c.tar.bz2
GH-121131: Clean up and fix some instrumented instructions. (GH-121132)
* Add support for 'prev_instr' to code generator and refactor some INSTRUMENTED instructions
Diffstat (limited to 'Include')
-rw-r--r--Include/internal/pycore_opcode_metadata.h9
-rw-r--r--Include/internal/pycore_uop_ids.h4
-rw-r--r--Include/opcode_ids.h30
3 files changed, 23 insertions, 20 deletions
diff --git a/Include/internal/pycore_opcode_metadata.h b/Include/internal/pycore_opcode_metadata.h
index 9c7ad92..f5c439e 100644
--- a/Include/internal/pycore_opcode_metadata.h
+++ b/Include/internal/pycore_opcode_metadata.h
@@ -231,6 +231,8 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
return 0;
case INSTRUMENTED_JUMP_FORWARD:
return 0;
+ case INSTRUMENTED_LINE:
+ return 0;
case INSTRUMENTED_LOAD_SUPER_ATTR:
return 3;
case INSTRUMENTED_POP_JUMP_IF_FALSE:
@@ -676,6 +678,8 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
return 0;
case INSTRUMENTED_JUMP_FORWARD:
return 0;
+ case INSTRUMENTED_LINE:
+ return 0;
case INSTRUMENTED_LOAD_SUPER_ATTR:
return 1 + (oparg & 1);
case INSTRUMENTED_POP_JUMP_IF_FALSE:
@@ -689,9 +693,9 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
case INSTRUMENTED_RESUME:
return 0;
case INSTRUMENTED_RETURN_CONST:
- return 0;
+ return 1;
case INSTRUMENTED_RETURN_VALUE:
- return 0;
+ return 1;
case INSTRUMENTED_YIELD_VALUE:
return 1;
case INTERPRETER_EXIT:
@@ -1083,6 +1087,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[264] = {
[INSTRUMENTED_INSTRUCTION] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[INSTRUMENTED_JUMP_BACKWARD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG },
[INSTRUMENTED_JUMP_FORWARD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
+ [INSTRUMENTED_LINE] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG },
[INSTRUMENTED_LOAD_SUPER_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
[INSTRUMENTED_POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
[INSTRUMENTED_POP_JUMP_IF_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
diff --git a/Include/internal/pycore_uop_ids.h b/Include/internal/pycore_uop_ids.h
index 9ae82ca..60de057 100644
--- a/Include/internal/pycore_uop_ids.h
+++ b/Include/internal/pycore_uop_ids.h
@@ -145,15 +145,13 @@ extern "C" {
#define _INSTRUMENTED_INSTRUCTION INSTRUMENTED_INSTRUCTION
#define _INSTRUMENTED_JUMP_BACKWARD INSTRUMENTED_JUMP_BACKWARD
#define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD
+#define _INSTRUMENTED_LINE INSTRUMENTED_LINE
#define _INSTRUMENTED_LOAD_SUPER_ATTR INSTRUMENTED_LOAD_SUPER_ATTR
#define _INSTRUMENTED_POP_JUMP_IF_FALSE INSTRUMENTED_POP_JUMP_IF_FALSE
#define _INSTRUMENTED_POP_JUMP_IF_NONE INSTRUMENTED_POP_JUMP_IF_NONE
#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE INSTRUMENTED_POP_JUMP_IF_NOT_NONE
#define _INSTRUMENTED_POP_JUMP_IF_TRUE INSTRUMENTED_POP_JUMP_IF_TRUE
#define _INSTRUMENTED_RESUME INSTRUMENTED_RESUME
-#define _INSTRUMENTED_RETURN_CONST INSTRUMENTED_RETURN_CONST
-#define _INSTRUMENTED_RETURN_VALUE INSTRUMENTED_RETURN_VALUE
-#define _INSTRUMENTED_YIELD_VALUE INSTRUMENTED_YIELD_VALUE
#define _INTERNAL_INCREMENT_OPT_COUNTER 381
#define _IS_NONE 382
#define _IS_OP IS_OP
diff --git a/Include/opcode_ids.h b/Include/opcode_ids.h
index dd9b1ec..d14b48f 100644
--- a/Include/opcode_ids.h
+++ b/Include/opcode_ids.h
@@ -204,21 +204,21 @@ extern "C" {
#define INSTRUMENTED_RESUME 236
#define INSTRUMENTED_END_FOR 237
#define INSTRUMENTED_END_SEND 238
-#define INSTRUMENTED_RETURN_VALUE 239
-#define INSTRUMENTED_RETURN_CONST 240
-#define INSTRUMENTED_YIELD_VALUE 241
-#define INSTRUMENTED_LOAD_SUPER_ATTR 242
-#define INSTRUMENTED_FOR_ITER 243
-#define INSTRUMENTED_CALL 244
-#define INSTRUMENTED_CALL_KW 245
-#define INSTRUMENTED_CALL_FUNCTION_EX 246
-#define INSTRUMENTED_INSTRUCTION 247
-#define INSTRUMENTED_JUMP_FORWARD 248
-#define INSTRUMENTED_JUMP_BACKWARD 249
-#define INSTRUMENTED_POP_JUMP_IF_TRUE 250
-#define INSTRUMENTED_POP_JUMP_IF_FALSE 251
-#define INSTRUMENTED_POP_JUMP_IF_NONE 252
-#define INSTRUMENTED_POP_JUMP_IF_NOT_NONE 253
+#define INSTRUMENTED_LOAD_SUPER_ATTR 239
+#define INSTRUMENTED_FOR_ITER 240
+#define INSTRUMENTED_CALL 241
+#define INSTRUMENTED_CALL_KW 242
+#define INSTRUMENTED_CALL_FUNCTION_EX 243
+#define INSTRUMENTED_INSTRUCTION 244
+#define INSTRUMENTED_JUMP_FORWARD 245
+#define INSTRUMENTED_JUMP_BACKWARD 246
+#define INSTRUMENTED_POP_JUMP_IF_TRUE 247
+#define INSTRUMENTED_POP_JUMP_IF_FALSE 248
+#define INSTRUMENTED_POP_JUMP_IF_NONE 249
+#define INSTRUMENTED_POP_JUMP_IF_NOT_NONE 250
+#define INSTRUMENTED_RETURN_VALUE 251
+#define INSTRUMENTED_RETURN_CONST 252
+#define INSTRUMENTED_YIELD_VALUE 253
#define INSTRUMENTED_LINE 254
#define JUMP 256
#define JUMP_NO_INTERRUPT 257