Skip to content

Commit

Permalink
Add (undocumented) _co_quickened attribute for code object. (GH-31552)
Browse files Browse the repository at this point in the history
  • Loading branch information
markshannon authored Feb 24, 2022
1 parent 7fce106 commit ae3adbe
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions Objects/codeobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -1537,13 +1537,24 @@ code_getfreevars(PyCodeObject *code, void *closure)
return _PyCode_GetFreevars(code);
}

static PyObject *
code_getquickened(PyCodeObject *code, void *closure)
{
if (code->co_quickened == NULL) {
Py_RETURN_NONE;
}
return PyBytes_FromStringAndSize((char *)code->co_firstinstr,
PyBytes_Size(code->co_code));
}

static PyGetSetDef code_getsetlist[] = {
{"co_lnotab", (getter)code_getlnotab, NULL, NULL},
// The following old names are kept for backward compatibility.
{"co_nlocals", (getter)code_getnlocals, NULL, NULL},
{"co_varnames", (getter)code_getvarnames, NULL, NULL},
{"co_cellvars", (getter)code_getcellvars, NULL, NULL},
{"co_freevars", (getter)code_getfreevars, NULL, NULL},
{"_co_quickened", (getter)code_getquickened, NULL, NULL},
{0}
};

Expand Down Expand Up @@ -1902,7 +1913,7 @@ _PyCode_ConstantKey(PyObject *op)
return key;
}

void
void
_PyStaticCode_Dealloc(PyCodeObject *co)
{
if (co->co_quickened) {
Expand All @@ -1921,7 +1932,7 @@ _PyStaticCode_Dealloc(PyCodeObject *co)
}

void
_PyStaticCode_InternStrings(PyCodeObject *co)
_PyStaticCode_InternStrings(PyCodeObject *co)
{
int res = intern_strings(co->co_names);
assert(res == 0);
Expand Down

0 comments on commit ae3adbe

Please sign in to comment.