summaryrefslogtreecommitdiffstats
path: root/Python/opcode_metadata.h
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2023-07-10 23:04:26 (GMT)
committerGitHub <noreply@github.com>2023-07-10 23:04:26 (GMT)
commit22988c323ad621b9f47b6cb640b80ac806e26368 (patch)
tree3df379493e053e266519e718d1c6d7829bea11ad /Python/opcode_metadata.h
parent18dfbd035775c15533d13a98e56b1d2bf5c65f00 (diff)
downloadcpython-22988c323ad621b9f47b6cb640b80ac806e26368.zip
cpython-22988c323ad621b9f47b6cb640b80ac806e26368.tar.gz
cpython-22988c323ad621b9f47b6cb640b80ac806e26368.tar.bz2
gh-106529: Implement POP_JUMP_IF_XXX uops (#106551)
- Hand-written uops JUMP_IF_{TRUE,FALSE}. These peek at the top of the stack. The jump target (in superblock space) is absolute. - Hand-written translation for POP_JUMP_IF_{TRUE,FALSE}, assuming the jump is unlikely. Once we implement jump-likelihood profiling, we can implement the jump-unlikely case (in another PR). - Tests (including some test cleanup). - Improvements to len(ex) and ex[i] to expose the whole trace.
Diffstat (limited to 'Python/opcode_metadata.h')
-rw-r--r--Python/opcode_metadata.h52
1 files changed, 28 insertions, 24 deletions
diff --git a/Python/opcode_metadata.h b/Python/opcode_metadata.h
index 92768e6..64923e6 100644
--- a/Python/opcode_metadata.h
+++ b/Python/opcode_metadata.h
@@ -21,18 +21,20 @@
#define EXIT_TRACE 300
#define SAVE_IP 301
-#define _GUARD_BOTH_INT 302
-#define _BINARY_OP_MULTIPLY_INT 303
-#define _BINARY_OP_ADD_INT 304
-#define _BINARY_OP_SUBTRACT_INT 305
-#define _GUARD_BOTH_FLOAT 306
-#define _BINARY_OP_MULTIPLY_FLOAT 307
-#define _BINARY_OP_ADD_FLOAT 308
-#define _BINARY_OP_SUBTRACT_FLOAT 309
-#define _GUARD_BOTH_UNICODE 310
-#define _BINARY_OP_ADD_UNICODE 311
-#define _LOAD_LOCALS 312
-#define _LOAD_FROM_DICT_OR_GLOBALS 313
+#define _POP_JUMP_IF_FALSE 302
+#define _POP_JUMP_IF_TRUE 303
+#define _GUARD_BOTH_INT 304
+#define _BINARY_OP_MULTIPLY_INT 305
+#define _BINARY_OP_ADD_INT 306
+#define _BINARY_OP_SUBTRACT_INT 307
+#define _GUARD_BOTH_FLOAT 308
+#define _BINARY_OP_MULTIPLY_FLOAT 309
+#define _BINARY_OP_ADD_FLOAT 310
+#define _BINARY_OP_SUBTRACT_FLOAT 311
+#define _GUARD_BOTH_UNICODE 312
+#define _BINARY_OP_ADD_UNICODE 313
+#define _LOAD_LOCALS 314
+#define _LOAD_FROM_DICT_OR_GLOBALS 315
#ifndef NEED_OPCODE_METADATA
extern int _PyOpcode_num_popped(int opcode, int oparg, bool jump);
@@ -1294,18 +1296,20 @@ const struct opcode_macro_expansion _PyOpcode_macro_expansion[256] = {
const char * const _PyOpcode_uop_name[512] = {
[300] = "EXIT_TRACE",
[301] = "SAVE_IP",
- [302] = "_GUARD_BOTH_INT",
- [303] = "_BINARY_OP_MULTIPLY_INT",
- [304] = "_BINARY_OP_ADD_INT",
- [305] = "_BINARY_OP_SUBTRACT_INT",
- [306] = "_GUARD_BOTH_FLOAT",
- [307] = "_BINARY_OP_MULTIPLY_FLOAT",
- [308] = "_BINARY_OP_ADD_FLOAT",
- [309] = "_BINARY_OP_SUBTRACT_FLOAT",
- [310] = "_GUARD_BOTH_UNICODE",
- [311] = "_BINARY_OP_ADD_UNICODE",
- [312] = "_LOAD_LOCALS",
- [313] = "_LOAD_FROM_DICT_OR_GLOBALS",
+ [302] = "_POP_JUMP_IF_FALSE",
+ [303] = "_POP_JUMP_IF_TRUE",
+ [304] = "_GUARD_BOTH_INT",
+ [305] = "_BINARY_OP_MULTIPLY_INT",
+ [306] = "_BINARY_OP_ADD_INT",
+ [307] = "_BINARY_OP_SUBTRACT_INT",
+ [308] = "_GUARD_BOTH_FLOAT",
+ [309] = "_BINARY_OP_MULTIPLY_FLOAT",
+ [310] = "_BINARY_OP_ADD_FLOAT",
+ [311] = "_BINARY_OP_SUBTRACT_FLOAT",
+ [312] = "_GUARD_BOTH_UNICODE",
+ [313] = "_BINARY_OP_ADD_UNICODE",
+ [314] = "_LOAD_LOCALS",
+ [315] = "_LOAD_FROM_DICT_OR_GLOBALS",
};
#endif // NEED_OPCODE_METADATA
#endif