diff options
author | Mark Shannon <mark@hotpy.org> | 2024-08-12 17:35:52 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-12 17:35:52 (GMT) |
commit | 1795d6cebaee07f30804d490fa90e3e516dfed79 (patch) | |
tree | b1eaeb5ea0400a3d56972ee8073c4e808952b3da /Python | |
parent | 53ebb6232a8ebc03827cf2251bfc67f1886ffd70 (diff) | |
download | cpython-1795d6cebaee07f30804d490fa90e3e516dfed79.zip cpython-1795d6cebaee07f30804d490fa90e3e516dfed79.tar.gz cpython-1795d6cebaee07f30804d490fa90e3e516dfed79.tar.bz2 |
GH-122869: Add missing tier two optimizer cases (GH-122936)
Diffstat (limited to 'Python')
-rw-r--r-- | Python/optimizer_bytecodes.c | 14 | ||||
-rw-r--r-- | Python/optimizer_cases.c.h | 21 |
2 files changed, 31 insertions, 4 deletions
diff --git a/Python/optimizer_bytecodes.c b/Python/optimizer_bytecodes.c index c982e37..010733e 100644 --- a/Python/optimizer_bytecodes.c +++ b/Python/optimizer_bytecodes.c @@ -329,6 +329,13 @@ dummy_func(void) { } } + op(_BINARY_SUBSCR_INIT_CALL, (container, sub -- new_frame: _Py_UOpsAbstractFrame *)) { + (void)container; + (void)sub; + new_frame = NULL; + ctx->done = true; + } + op(_TO_BOOL, (value -- res)) { if (!optimize_to_bool(this_instr, ctx, value, &res)) { res = sym_new_type(ctx, &PyBool_Type); @@ -538,6 +545,13 @@ dummy_func(void) { self = owner; } + op(_LOAD_ATTR_PROPERTY_FRAME, (fget/4, owner -- new_frame: _Py_UOpsAbstractFrame *)) { + (void)fget; + (void)owner; + new_frame = NULL; + ctx->done = true; + } + op(_INIT_CALL_BOUND_METHOD_EXACT_ARGS, (callable, unused, unused[oparg] -- func, self, unused[oparg])) { (void)callable; func = sym_new_not_null(ctx); diff --git a/Python/optimizer_cases.c.h b/Python/optimizer_cases.c.h index 50aa972..3f4080d 100644 --- a/Python/optimizer_cases.c.h +++ b/Python/optimizer_cases.c.h @@ -544,8 +544,15 @@ } case _BINARY_SUBSCR_INIT_CALL: { - _PyInterpreterFrame *new_frame; - new_frame = sym_new_not_null(ctx); + _Py_UopsSymbol *sub; + _Py_UopsSymbol *container; + _Py_UOpsAbstractFrame *new_frame; + sub = stack_pointer[-1]; + container = stack_pointer[-2]; + (void)container; + (void)sub; + new_frame = NULL; + ctx->done = true; stack_pointer[-2] = (_Py_UopsSymbol *)new_frame; stack_pointer += -1; assert(WITHIN_STACK_BOUNDS()); @@ -1172,8 +1179,14 @@ } case _LOAD_ATTR_PROPERTY_FRAME: { - _PyInterpreterFrame *new_frame; - new_frame = sym_new_not_null(ctx); + _Py_UopsSymbol *owner; + _Py_UOpsAbstractFrame *new_frame; + owner = stack_pointer[-1]; + PyObject *fget = (PyObject *)this_instr->operand; + (void)fget; + (void)owner; + new_frame = NULL; + ctx->done = true; stack_pointer[-1] = (_Py_UopsSymbol *)new_frame; break; } |