Skip to content

Commit

Permalink
Fix BINARY_SUBSCR_GETITEM stats (GH-93903)
Browse files Browse the repository at this point in the history
  • Loading branch information
Fidget-Spinner committed Jun 16, 2022
1 parent d5be9a5 commit ab45c1d
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
11 changes: 5 additions & 6 deletions Python/ceval.c
Original file line number Diff line number Diff line change
Expand Up @@ -2240,16 +2240,15 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
PyFunctionObject *getitem = (PyFunctionObject *)cached;
DEOPT_IF(getitem->func_version != cache->func_version, BINARY_SUBSCR);
PyCodeObject *code = (PyCodeObject *)getitem->func_code;
size_t size = code->co_nlocalsplus + code->co_stacksize + FRAME_SPECIALS_SIZE;
assert(code->co_argcount == 2);
_PyInterpreterFrame *new_frame = _PyThreadState_BumpFramePointer(tstate, size);
STAT_INC(BINARY_SUBSCR, hit);

Py_INCREF(getitem);
_PyInterpreterFrame *new_frame = _PyFrame_Push(tstate, getitem);
if (new_frame == NULL) {
goto error;
}
CALL_STAT_INC(frames_pushed);
Py_INCREF(getitem);
_PyFrame_InitializeSpecials(new_frame, getitem,
NULL, code->co_nlocalsplus);
CALL_STAT_INC(inlined_py_calls);
STACK_SHRINK(2);
new_frame->localsplus[0] = container;
new_frame->localsplus[1] = sub;
Expand Down
3 changes: 2 additions & 1 deletion Python/specialize.c
Original file line number Diff line number Diff line change
Expand Up @@ -1212,7 +1212,8 @@ _Py_Specialize_BinarySubscr(
write_u32(cache->type_version, cls->tp_version_tag);
int version = _PyFunction_GetVersionForCurrentState(func);
if (version == 0 || version != (uint16_t)version) {
SPECIALIZATION_FAIL(BINARY_SUBSCR, SPEC_FAIL_OUT_OF_VERSIONS);
SPECIALIZATION_FAIL(BINARY_SUBSCR, version == 0 ?
SPEC_FAIL_OUT_OF_VERSIONS : SPEC_FAIL_OUT_OF_RANGE);
goto fail;
}
cache->func_version = version;
Expand Down

0 comments on commit ab45c1d

Please sign in to comment.