gh-134584: Eliminate redundant refcounting from _CONTAINS_{OP|OP_SET|OP_DICT} (GH-143731)

Signed-off-by: Manjusaka <me@manjusaka.me>
This commit is contained in:
Nadeshiko Manju 2026-01-12 23:47:31 +08:00 committed by GitHub
parent c315748060
commit e535bdb0a2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 253 additions and 130 deletions

View file

@ -525,17 +525,23 @@ dummy_func(void) {
r = right;
}
op(_CONTAINS_OP, (left, right -- b)) {
op(_CONTAINS_OP, (left, right -- b, l, r)) {
b = sym_new_type(ctx, &PyBool_Type);
l = left;
r = right;
REPLACE_OPCODE_IF_EVALUATES_PURE(left, right, b);
b = sym_new_type(ctx, &PyBool_Type);
}
op(_CONTAINS_OP_SET, (left, right -- b)) {
op(_CONTAINS_OP_SET, (left, right -- b, l, r)) {
b = sym_new_type(ctx, &PyBool_Type);
l = left;
r = right;
}
op(_CONTAINS_OP_DICT, (left, right -- b)) {
op(_CONTAINS_OP_DICT, (left, right -- b, l, r)) {
b = sym_new_type(ctx, &PyBool_Type);
l = left;
r = right;
}
op(_LOAD_CONST, (-- value)) {