Lines Matching refs:co

208 get_localsplus_names(PyCodeObject *co, _PyLocals_Kind kind, int num)
215 for (int offset = 0; offset < co->co_nlocalsplus; offset++) {
216 _PyLocals_Kind k = _PyLocals_GetKind(co->co_localspluskinds, offset);
221 PyObject *name = PyTuple_GET_ITEM(co->co_localsplusnames, offset);
289 init_code(PyCodeObject *co, struct _PyCodeConstructor *con)
297 co->co_filename = con->filename;
299 co->co_name = con->name;
301 co->co_qualname = con->qualname;
302 co->co_flags = con->flags;
304 co->co_firstlineno = con->firstlineno;
306 co->co_linetable = con->linetable;
309 co->co_consts = con->consts;
311 co->co_names = con->names;
314 co->co_localsplusnames = con->localsplusnames;
316 co->co_localspluskinds = con->localspluskinds;
318 co->co_argcount = con->argcount;
319 co->co_posonlyargcount = con->posonlyargcount;
320 co->co_kwonlyargcount = con->kwonlyargcount;
322 co->co_stacksize = con->stacksize;
325 co->co_exceptiontable = con->exceptiontable;
328 co->co_nlocalsplus = nlocalsplus;
329 co->co_nlocals = nlocals;
330 co->co_nplaincellvars = nplaincellvars;
331 co->co_ncellvars = ncellvars;
332 co->co_nfreevars = nfreevars;
335 co->co_weakreflist = NULL;
336 co->co_extra = NULL;
337 co->_co_code = NULL;
339 co->co_warmup = QUICKENING_INITIAL_WARMUP_VALUE;
340 co->_co_linearray_entry_size = 0;
341 co->_co_linearray = NULL;
342 memcpy(_PyCode_CODE(co), PyBytes_AS_STRING(con->code),
345 while (entry_point < Py_SIZE(co) &&
346 _Py_OPCODE(_PyCode_CODE(co)[entry_point]) != RESUME) {
349 co->_co_firsttraceable = entry_point;
481 PyCodeObject *co = PyObject_NewVar(PyCodeObject, &PyCode_Type, size);
482 if (co == NULL) {
487 init_code(co, con);
489 return co;
507 PyCodeObject *co = NULL;
610 co = _PyCode_New(&con);
611 if (co == NULL) {
618 return co;
722 _PyCode_CreateLineArray(PyCodeObject *co)
724 assert(co->_co_linearray == NULL);
728 _PyCode_InitAddressRange(co, &bounds);
740 co->_co_linearray = PyMem_Malloc(Py_SIZE(co)*size);
741 if (co->_co_linearray == NULL) {
745 co->_co_linearray_entry_size = size;
746 _PyCode_InitAddressRange(co, &bounds);
751 assert(index < (int)Py_SIZE(co));
754 ((int16_t *)co->_co_linearray)[index] = bounds.ar_line;
758 ((int32_t *)co->_co_linearray)[index] = bounds.ar_line;
766 PyCode_Addr2Line(PyCodeObject *co, int addrq)
769 return co->co_firstlineno;
771 assert(addrq >= 0 && addrq < _PyCode_NBYTES(co));
772 if (co->_co_linearray) {
773 return _PyCode_LineNumberFromArray(co, addrq / sizeof(_Py_CODEUNIT));
776 _PyCode_InitAddressRange(co, &bounds);
792 _PyCode_InitAddressRange(PyCodeObject* co, PyCodeAddressRange *bounds)
794 assert(co->co_linetable != NULL);
795 const char *linetable = PyBytes_AS_STRING(co->co_linetable);
796 Py_ssize_t length = PyBytes_GET_SIZE(co->co_linetable);
797 _PyLineTable_InitAddressRange(linetable, length, co->co_firstlineno, bounds);
981 PyCode_Addr2Location(PyCodeObject *co, int addrq,
986 *start_line = *end_line = co->co_firstlineno;
990 assert(addrq >= 0 && addrq < _PyCode_NBYTES(co));
992 _PyCode_InitAddressRange(co, &bounds);
1413 _PyCode_GetVarnames(PyCodeObject *co)
1415 return get_localsplus_names(co, CO_FAST_LOCAL, co->co_nlocals);
1425 _PyCode_GetCellvars(PyCodeObject *co)
1427 return get_localsplus_names(co, CO_FAST_CELL, co->co_ncellvars);
1437 _PyCode_GetFreevars(PyCodeObject *co)
1439 return get_localsplus_names(co, CO_FAST_FREE, co->co_nfreevars);
1463 _PyCode_GetCode(PyCodeObject *co)
1465 if (co->_co_code != NULL) {
1466 return Py_NewRef(co->_co_code);
1468 PyObject *code = PyBytes_FromStringAndSize((const char *)_PyCode_CODE(co),
1469 _PyCode_NBYTES(co));
1473 deopt_code((_Py_CODEUNIT *)PyBytes_AS_STRING(code), Py_SIZE(co));
1474 assert(co->_co_code == NULL);
1475 co->_co_code = Py_NewRef(code);
1480 PyCode_GetCode(PyCodeObject *co)
1482 return _PyCode_GetCode(co);
1531 PyObject *co = NULL;
1589 co = (PyObject *)PyCode_NewWithPosOnlyArgs(argcount, posonlyargcount,
1604 return co;
1608 code_dealloc(PyCodeObject *co)
1610 if (co->co_extra != NULL) {
1612 _PyCodeObjectExtra *co_extra = co->co_extra;
1625 Py_XDECREF(co->co_consts);
1626 Py_XDECREF(co->co_names);
1627 Py_XDECREF(co->co_localsplusnames);
1628 Py_XDECREF(co->co_localspluskinds);
1629 Py_XDECREF(co->co_filename);
1630 Py_XDECREF(co->co_name);
1631 Py_XDECREF(co->co_qualname);
1632 Py_XDECREF(co->co_linetable);
1633 Py_XDECREF(co->co_exceptiontable);
1634 Py_XDECREF(co->_co_code);
1635 if (co->co_weakreflist != NULL) {
1636 PyObject_ClearWeakRefs((PyObject*)co);
1638 if (co->_co_linearray) {
1639 PyMem_Free(co->_co_linearray);
1641 if (co->co_warmup == 0) {
1644 PyObject_Free(co);
1648 code_repr(PyCodeObject *co)
1651 if (co->co_firstlineno != 0)
1652 lineno = co->co_firstlineno;
1655 if (co->co_filename && PyUnicode_Check(co->co_filename)) {
1658 co->co_name, co, co->co_filename, lineno);
1662 co->co_name, co, lineno);
1669 PyCodeObject *co, *cp;
1680 co = (PyCodeObject *)self;
1683 eq = PyObject_RichCompareBool(co->co_name, cp->co_name, Py_EQ);
1685 eq = co->co_argcount == cp->co_argcount;
1687 eq = co->co_posonlyargcount == cp->co_posonlyargcount;
1689 eq = co->co_kwonlyargcount == cp->co_kwonlyargcount;
1691 eq = co->co_flags == cp->co_flags;
1693 eq = co->co_firstlineno == cp->co_firstlineno;
1695 eq = Py_SIZE(co) == Py_SIZE(cp);
1699 for (int i = 0; i < Py_SIZE(co); i++) {
1700 _Py_CODEUNIT co_instr = _PyCode_CODE(co)[i];
1712 consts1 = _PyCode_ConstantKey(co->co_consts);
1725 eq = PyObject_RichCompareBool(co->co_names, cp->co_names, Py_EQ);
1727 eq = PyObject_RichCompareBool(co->co_localsplusnames,
1730 eq = PyObject_RichCompareBool(co->co_linetable, cp->co_linetable, Py_EQ);
1734 eq = PyObject_RichCompareBool(co->co_exceptiontable,
1760 code_hash(PyCodeObject *co)
1763 h0 = PyObject_Hash(co->co_name);
1765 h1 = PyObject_Hash(co->co_consts);
1767 h2 = PyObject_Hash(co->co_names);
1769 h3 = PyObject_Hash(co->co_localsplusnames);
1771 Py_hash_t h4 = PyObject_Hash(co->co_linetable);
1775 Py_hash_t h5 = PyObject_Hash(co->co_exceptiontable);
1780 co->co_argcount ^ co->co_posonlyargcount ^ co->co_kwonlyargcount ^
1781 co->co_flags;
1858 code_sizeof(PyCodeObject *co, PyObject *Py_UNUSED(args))
1860 Py_ssize_t res = _PyObject_VAR_SIZE(Py_TYPE(co), Py_SIZE(co));
1862 _PyCodeObjectExtra *co_extra = (_PyCodeObjectExtra*) co->co_extra;
1949 PyCodeObject *co = NULL;
1975 co = PyCode_NewWithPosOnlyArgs(
1987 return (PyObject *)co;
2201 _PyStaticCode_Dealloc(PyCodeObject *co)
2203 if (co->co_warmup == 0) {
2206 deopt_code(_PyCode_CODE(co), Py_SIZE(co));
2207 co->co_warmup = QUICKENING_INITIAL_WARMUP_VALUE;
2208 PyMem_Free(co->co_extra);
2209 Py_CLEAR(co->_co_code);
2210 co->co_extra = NULL;
2211 if (co->co_weakreflist != NULL) {
2212 PyObject_ClearWeakRefs((PyObject *)co);
2213 co->co_weakreflist = NULL;
2215 if (co->_co_linearray) {
2216 PyMem_Free(co->_co_linearray);
2217 co->_co_linearray = NULL;
2222 _PyStaticCode_InternStrings(PyCodeObject *co)
2224 int res = intern_strings(co->co_names);
2228 res = intern_string_constants(co->co_consts, NULL);
2232 res = intern_strings(co->co_localsplusnames);