summaryrefslogtreecommitdiffstats
path: root/Python/codegen.c
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2025-01-20 17:09:23 (GMT)
committerGitHub <noreply@github.com>2025-01-20 17:09:23 (GMT)
commitab61d3f4303d14a413bc9ae6557c730ffdf7579e (patch)
treeec35e41ce467f4cb281208970cf453a680d82aed /Python/codegen.c
parent0a6412f9cc9e694e76299cfbd73ec969b7d47af6 (diff)
downloadcpython-ab61d3f4303d14a413bc9ae6557c730ffdf7579e.zip
cpython-ab61d3f4303d14a413bc9ae6557c730ffdf7579e.tar.gz
cpython-ab61d3f4303d14a413bc9ae6557c730ffdf7579e.tar.bz2
GH-128914: Remove conditional stack effects from `bytecodes.c` and the code generators (GH-128918)
Diffstat (limited to 'Python/codegen.c')
-rw-r--r--Python/codegen.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/Python/codegen.c b/Python/codegen.c
index 61707ba..b3f8455 100644
--- a/Python/codegen.c
+++ b/Python/codegen.c
@@ -348,8 +348,6 @@ codegen_addop_o(compiler *c, location loc,
RETURN_IF_ERROR_IN_SCOPE((C), ret); \
} while (0)
-#define LOAD_METHOD -1
-#define LOAD_SUPER_METHOD -2
#define LOAD_ZERO_SUPER_ATTR -3
#define LOAD_ZERO_SUPER_METHOD -4
@@ -366,20 +364,11 @@ codegen_addop_name(compiler *c, location loc,
if (arg < 0) {
return ERROR;
}
- if (opcode == LOAD_ATTR) {
- arg <<= 1;
- }
- if (opcode == LOAD_METHOD) {
- opcode = LOAD_ATTR;
- arg <<= 1;
- arg |= 1;
- }
if (opcode == LOAD_SUPER_ATTR) {
arg <<= 2;
arg |= 2;
}
if (opcode == LOAD_SUPER_METHOD) {
- opcode = LOAD_SUPER_ATTR;
arg <<= 2;
arg |= 3;
}
@@ -388,7 +377,7 @@ codegen_addop_name(compiler *c, location loc,
arg <<= 2;
}
if (opcode == LOAD_ZERO_SUPER_METHOD) {
- opcode = LOAD_SUPER_ATTR;
+ opcode = LOAD_SUPER_METHOD;
arg <<= 2;
arg |= 1;
}
@@ -3165,9 +3154,6 @@ codegen_nameop(compiler *c, location loc,
assert(op);
Py_DECREF(mangled);
- if (op == LOAD_GLOBAL) {
- arg <<= 1;
- }
ADDOP_I(c, loc, op, arg);
return SUCCESS;
@@ -4108,7 +4094,10 @@ ex_call:
}
assert(have_dict);
}
- ADDOP_I(c, loc, CALL_FUNCTION_EX, nkwelts > 0);
+ if (nkwelts == 0) {
+ ADDOP(c, loc, PUSH_NULL);
+ }
+ ADDOP(c, loc, CALL_FUNCTION_EX);
return SUCCESS;
}
@@ -4841,8 +4830,10 @@ codegen_async_with(compiler *c, stmt_ty s, int pos)
SETUP_WITH E
<code to store to VAR> or POP_TOP
<code for BLOCK>
- LOAD_CONST (None, None, None)
- CALL_FUNCTION_EX 0
+ LOAD_CONST None
+ LOAD_CONST None
+ LOAD_CONST None
+ CALL 3
JUMP EXIT
E: WITH_EXCEPT_START (calls EXPR.__exit__)
POP_JUMP_IF_TRUE T: