summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2022-09-01 20:36:47 (GMT)
committerGitHub <noreply@github.com>2022-09-01 20:36:47 (GMT)
commit4c72517cada147b215cf30ff8dac70ea0f08f1e0 (patch)
tree1012522409ed719a8d8ba0b5eab4e5f3bce77bd6 /Include
parenta91f25577c71ab8797a4b42f22c43bbaffc2604d (diff)
downloadcpython-4c72517cada147b215cf30ff8dac70ea0f08f1e0.zip
cpython-4c72517cada147b215cf30ff8dac70ea0f08f1e0.tar.gz
cpython-4c72517cada147b215cf30ff8dac70ea0f08f1e0.tar.bz2
gh-93554: Conditional jump opcodes only jump forward (GH-96318)
Diffstat (limited to 'Include')
-rw-r--r--Include/internal/pycore_opcode.h46
-rw-r--r--Include/opcode.h40
2 files changed, 35 insertions, 51 deletions
diff --git a/Include/internal/pycore_opcode.h b/Include/internal/pycore_opcode.h
index 5875901..1592551 100644
--- a/Include/internal/pycore_opcode.h
+++ b/Include/internal/pycore_opcode.h
@@ -23,10 +23,10 @@ static const uint32_t _PyOpcode_RelativeJump[9] = {
536870912U,
135118848U,
4163U,
- 122880U,
0U,
0U,
- 1008U,
+ 0U,
+ 48U,
};
static const uint32_t _PyOpcode_Jump[9] = {
0U,
@@ -34,10 +34,10 @@ static const uint32_t _PyOpcode_Jump[9] = {
536870912U,
135118848U,
4163U,
- 122880U,
0U,
0U,
- 1008U,
+ 0U,
+ 48U,
};
const uint8_t _PyOpcode_Caches[256] = {
@@ -187,14 +187,10 @@ const uint8_t _PyOpcode_Deopt[256] = {
[MATCH_SEQUENCE] = MATCH_SEQUENCE,
[NOP] = NOP,
[POP_EXCEPT] = POP_EXCEPT,
- [POP_JUMP_BACKWARD_IF_FALSE] = POP_JUMP_BACKWARD_IF_FALSE,
- [POP_JUMP_BACKWARD_IF_NONE] = POP_JUMP_BACKWARD_IF_NONE,
- [POP_JUMP_BACKWARD_IF_NOT_NONE] = POP_JUMP_BACKWARD_IF_NOT_NONE,
- [POP_JUMP_BACKWARD_IF_TRUE] = POP_JUMP_BACKWARD_IF_TRUE,
- [POP_JUMP_FORWARD_IF_FALSE] = POP_JUMP_FORWARD_IF_FALSE,
- [POP_JUMP_FORWARD_IF_NONE] = POP_JUMP_FORWARD_IF_NONE,
- [POP_JUMP_FORWARD_IF_NOT_NONE] = POP_JUMP_FORWARD_IF_NOT_NONE,
- [POP_JUMP_FORWARD_IF_TRUE] = POP_JUMP_FORWARD_IF_TRUE,
+ [POP_JUMP_IF_FALSE] = POP_JUMP_IF_FALSE,
+ [POP_JUMP_IF_NONE] = POP_JUMP_IF_NONE,
+ [POP_JUMP_IF_NOT_NONE] = POP_JUMP_IF_NOT_NONE,
+ [POP_JUMP_IF_TRUE] = POP_JUMP_IF_TRUE,
[POP_TOP] = POP_TOP,
[PREP_RERAISE_STAR] = PREP_RERAISE_STAR,
[PRINT_EXPR] = PRINT_EXPR,
@@ -243,7 +239,7 @@ const uint8_t _PyOpcode_Deopt[256] = {
#endif // NEED_OPCODE_TABLES
#ifdef Py_DEBUG
-static const char *const _PyOpcode_OpName[267] = {
+static const char *const _PyOpcode_OpName[263] = {
[CACHE] = "CACHE",
[POP_TOP] = "POP_TOP",
[PUSH_NULL] = "PUSH_NULL",
@@ -358,8 +354,8 @@ static const char *const _PyOpcode_OpName[267] = {
[JUMP_IF_FALSE_OR_POP] = "JUMP_IF_FALSE_OR_POP",
[JUMP_IF_TRUE_OR_POP] = "JUMP_IF_TRUE_OR_POP",
[LOAD_ATTR_METHOD_NO_DICT] = "LOAD_ATTR_METHOD_NO_DICT",
- [POP_JUMP_FORWARD_IF_FALSE] = "POP_JUMP_FORWARD_IF_FALSE",
- [POP_JUMP_FORWARD_IF_TRUE] = "POP_JUMP_FORWARD_IF_TRUE",
+ [POP_JUMP_IF_FALSE] = "POP_JUMP_IF_FALSE",
+ [POP_JUMP_IF_TRUE] = "POP_JUMP_IF_TRUE",
[LOAD_GLOBAL] = "LOAD_GLOBAL",
[IS_OP] = "IS_OP",
[CONTAINS_OP] = "CONTAINS_OP",
@@ -372,8 +368,8 @@ static const char *const _PyOpcode_OpName[267] = {
[STORE_FAST] = "STORE_FAST",
[DELETE_FAST] = "DELETE_FAST",
[LOAD_FAST_CHECK] = "LOAD_FAST_CHECK",
- [POP_JUMP_FORWARD_IF_NOT_NONE] = "POP_JUMP_FORWARD_IF_NOT_NONE",
- [POP_JUMP_FORWARD_IF_NONE] = "POP_JUMP_FORWARD_IF_NONE",
+ [POP_JUMP_IF_NOT_NONE] = "POP_JUMP_IF_NOT_NONE",
+ [POP_JUMP_IF_NONE] = "POP_JUMP_IF_NONE",
[RAISE_VARARGS] = "RAISE_VARARGS",
[GET_AWAITABLE] = "GET_AWAITABLE",
[MAKE_FUNCTION] = "MAKE_FUNCTION",
@@ -417,10 +413,6 @@ static const char *const _PyOpcode_OpName[267] = {
[STORE_FAST__LOAD_FAST] = "STORE_FAST__LOAD_FAST",
[CALL] = "CALL",
[KW_NAMES] = "KW_NAMES",
- [POP_JUMP_BACKWARD_IF_NOT_NONE] = "POP_JUMP_BACKWARD_IF_NOT_NONE",
- [POP_JUMP_BACKWARD_IF_NONE] = "POP_JUMP_BACKWARD_IF_NONE",
- [POP_JUMP_BACKWARD_IF_FALSE] = "POP_JUMP_BACKWARD_IF_FALSE",
- [POP_JUMP_BACKWARD_IF_TRUE] = "POP_JUMP_BACKWARD_IF_TRUE",
[STORE_FAST__STORE_FAST] = "STORE_FAST__STORE_FAST",
[STORE_SUBSCR_ADAPTIVE] = "STORE_SUBSCR_ADAPTIVE",
[STORE_SUBSCR_DICT] = "STORE_SUBSCR_DICT",
@@ -429,6 +421,10 @@ static const char *const _PyOpcode_OpName[267] = {
[UNPACK_SEQUENCE_LIST] = "UNPACK_SEQUENCE_LIST",
[UNPACK_SEQUENCE_TUPLE] = "UNPACK_SEQUENCE_TUPLE",
[UNPACK_SEQUENCE_TWO_TUPLE] = "UNPACK_SEQUENCE_TWO_TUPLE",
+ [181] = "<181>",
+ [182] = "<182>",
+ [183] = "<183>",
+ [184] = "<184>",
[185] = "<185>",
[186] = "<186>",
[187] = "<187>",
@@ -506,15 +502,15 @@ static const char *const _PyOpcode_OpName[267] = {
[POP_BLOCK] = "POP_BLOCK",
[JUMP] = "JUMP",
[JUMP_NO_INTERRUPT] = "JUMP_NO_INTERRUPT",
- [POP_JUMP_IF_FALSE] = "POP_JUMP_IF_FALSE",
- [POP_JUMP_IF_TRUE] = "POP_JUMP_IF_TRUE",
- [POP_JUMP_IF_NONE] = "POP_JUMP_IF_NONE",
- [POP_JUMP_IF_NOT_NONE] = "POP_JUMP_IF_NOT_NONE",
[LOAD_METHOD] = "LOAD_METHOD",
};
#endif
#define EXTRA_CASES \
+ case 181: \
+ case 182: \
+ case 183: \
+ case 184: \
case 185: \
case 186: \
case 187: \
diff --git a/Include/opcode.h b/Include/opcode.h
index cf11e55..42825df 100644
--- a/Include/opcode.h
+++ b/Include/opcode.h
@@ -72,8 +72,8 @@ extern "C" {
#define JUMP_FORWARD 110
#define JUMP_IF_FALSE_OR_POP 111
#define JUMP_IF_TRUE_OR_POP 112
-#define POP_JUMP_FORWARD_IF_FALSE 114
-#define POP_JUMP_FORWARD_IF_TRUE 115
+#define POP_JUMP_IF_FALSE 114
+#define POP_JUMP_IF_TRUE 115
#define LOAD_GLOBAL 116
#define IS_OP 117
#define CONTAINS_OP 118
@@ -85,8 +85,8 @@ extern "C" {
#define STORE_FAST 125
#define DELETE_FAST 126
#define LOAD_FAST_CHECK 127
-#define POP_JUMP_FORWARD_IF_NOT_NONE 128
-#define POP_JUMP_FORWARD_IF_NONE 129
+#define POP_JUMP_IF_NOT_NONE 128
+#define POP_JUMP_IF_NONE 129
#define RAISE_VARARGS 130
#define GET_AWAITABLE 131
#define MAKE_FUNCTION 132
@@ -117,10 +117,6 @@ extern "C" {
#define DICT_UPDATE 165
#define CALL 171
#define KW_NAMES 172
-#define POP_JUMP_BACKWARD_IF_NOT_NONE 173
-#define POP_JUMP_BACKWARD_IF_NONE 174
-#define POP_JUMP_BACKWARD_IF_FALSE 175
-#define POP_JUMP_BACKWARD_IF_TRUE 176
#define MIN_PSEUDO_OPCODE 256
#define SETUP_FINALLY 256
#define SETUP_CLEANUP 257
@@ -128,12 +124,8 @@ extern "C" {
#define POP_BLOCK 259
#define JUMP 260
#define JUMP_NO_INTERRUPT 261
-#define POP_JUMP_IF_FALSE 262
-#define POP_JUMP_IF_TRUE 263
-#define POP_JUMP_IF_NONE 264
-#define POP_JUMP_IF_NOT_NONE 265
-#define LOAD_METHOD 266
-#define MAX_PSEUDO_OPCODE 266
+#define LOAD_METHOD 262
+#define MAX_PSEUDO_OPCODE 262
#define BINARY_OP_ADAPTIVE 3
#define BINARY_OP_ADD_FLOAT 4
#define BINARY_OP_ADD_INT 5
@@ -199,23 +191,19 @@ extern "C" {
#define STORE_ATTR_SLOT 168
#define STORE_ATTR_WITH_HINT 169
#define STORE_FAST__LOAD_FAST 170
-#define STORE_FAST__STORE_FAST 177
-#define STORE_SUBSCR_ADAPTIVE 178
-#define STORE_SUBSCR_DICT 179
-#define STORE_SUBSCR_LIST_INT 180
-#define UNPACK_SEQUENCE_ADAPTIVE 181
-#define UNPACK_SEQUENCE_LIST 182
-#define UNPACK_SEQUENCE_TUPLE 183
-#define UNPACK_SEQUENCE_TWO_TUPLE 184
+#define STORE_FAST__STORE_FAST 173
+#define STORE_SUBSCR_ADAPTIVE 174
+#define STORE_SUBSCR_DICT 175
+#define STORE_SUBSCR_LIST_INT 176
+#define UNPACK_SEQUENCE_ADAPTIVE 177
+#define UNPACK_SEQUENCE_LIST 178
+#define UNPACK_SEQUENCE_TUPLE 179
+#define UNPACK_SEQUENCE_TWO_TUPLE 180
#define DO_TRACING 255
#define HAS_ARG(op) ((((op) >= HAVE_ARGUMENT) && (!IS_PSEUDO_OPCODE(op)))\
|| ((op) == JUMP) \
|| ((op) == JUMP_NO_INTERRUPT) \
- || ((op) == POP_JUMP_IF_FALSE) \
- || ((op) == POP_JUMP_IF_TRUE) \
- || ((op) == POP_JUMP_IF_NONE) \
- || ((op) == POP_JUMP_IF_NOT_NONE) \
|| ((op) == LOAD_METHOD) \
)