Skip to content

Commit

Permalink
Merge branch 'main' into pickler-unpickler-attrs
Browse files Browse the repository at this point in the history
  • Loading branch information
serhiy-storchaka authored Nov 6, 2024
2 parents b111e89 + 6e03ff2 commit 78daa5e
Showing 1 changed file with 7 additions and 17 deletions.
24 changes: 7 additions & 17 deletions Python/specialize.c
Original file line number Diff line number Diff line change
Expand Up @@ -2760,8 +2760,8 @@ _Py_Specialize_ToBool(_PyStackRef value_o, _Py_CODEUNIT *instr)
cache->counter = adaptive_counter_cooldown();
}

#ifdef Py_STATS
static int containsop_fail_kind(PyObject *value) {
static int
containsop_fail_kind(PyObject *value) {
if (PyUnicode_CheckExact(value)) {
return SPEC_FAIL_CONTAINS_OP_STR;
}
Expand All @@ -2776,7 +2776,6 @@ static int containsop_fail_kind(PyObject *value) {
}
return SPEC_FAIL_OTHER;
}
#endif // Py_STATS

void
_Py_Specialize_ContainsOp(_PyStackRef value_st, _Py_CODEUNIT *instr)
Expand All @@ -2785,26 +2784,17 @@ _Py_Specialize_ContainsOp(_PyStackRef value_st, _Py_CODEUNIT *instr)

assert(ENABLE_SPECIALIZATION_FT);
assert(_PyOpcode_Caches[CONTAINS_OP] == INLINE_CACHE_ENTRIES_COMPARE_OP);
uint8_t specialized_op;
_PyContainsOpCache *cache = (_PyContainsOpCache *)(instr + 1);
if (PyDict_CheckExact(value)) {
specialized_op = CONTAINS_OP_DICT;
goto success;
specialize(instr, CONTAINS_OP_DICT);
return;
}
if (PySet_CheckExact(value) || PyFrozenSet_CheckExact(value)) {
specialized_op = CONTAINS_OP_SET;
goto success;
specialize(instr, CONTAINS_OP_SET);
return;
}

SPECIALIZATION_FAIL(CONTAINS_OP, containsop_fail_kind(value));
STAT_INC(CONTAINS_OP, failure);
SET_OPCODE_OR_RETURN(instr, CONTAINS_OP);
cache->counter = adaptive_counter_backoff(cache->counter);
unspecialize(instr, containsop_fail_kind(value));
return;
success:
STAT_INC(CONTAINS_OP, success);
SET_OPCODE_OR_RETURN(instr, specialized_op);
cache->counter = adaptive_counter_cooldown();
}

/* Code init cleanup.
Expand Down

0 comments on commit 78daa5e

Please sign in to comment.