Thanks to visit codestin.com
Credit goes to github.com

Skip to content

bpo-35064 prefix smelly symbols that appear with COUNT_ALLOCS with _Py_ #10152

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 28, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
bpo-35064 prefix semelly symbols that appear with COUNT_ALLOCS with _Py_
  • Loading branch information
pablogsal committed Oct 27, 2018
commit 77c74afed89a07b51be9dec68d574a0d004e6be1
8 changes: 4 additions & 4 deletions Include/object.h
Original file line number Diff line number Diff line change
Expand Up @@ -752,10 +752,10 @@ PyAPI_FUNC(void) _PyDebug_PrintTotalRefs(void);
#endif /* Py_REF_DEBUG */

#ifdef COUNT_ALLOCS
PyAPI_FUNC(void) inc_count(PyTypeObject *);
PyAPI_FUNC(void) dec_count(PyTypeObject *);
#define _Py_INC_TPALLOCS(OP) inc_count(Py_TYPE(OP))
#define _Py_INC_TPFREES(OP) dec_count(Py_TYPE(OP))
PyAPI_FUNC(void) _Py_inc_count(PyTypeObject *);
PyAPI_FUNC(void) _Py_dec_count(PyTypeObject *);
#define _Py_INC_TPALLOCS(OP) _Py_inc_count(Py_TYPE(OP))
#define _Py_INC_TPFREES(OP) _Py_dec_count(Py_TYPE(OP))
#define _Py_DEC_TPFREES(OP) Py_TYPE(OP)->tp_frees--
#define _Py_COUNT_ALLOCS_COMMA ,
#else
Expand Down
10 changes: 5 additions & 5 deletions Objects/bytesobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class bytes "PyBytesObject *" "&PyBytes_Type"
#include "clinic/bytesobject.c.h"

#ifdef COUNT_ALLOCS
Py_ssize_t null_strings, one_strings;
Py_ssize_t _Py_null_strings, _Py_one_strings;
#endif

static PyBytesObject *characters[UCHAR_MAX + 1];
Expand Down Expand Up @@ -66,7 +66,7 @@ _PyBytes_FromSize(Py_ssize_t size, int use_calloc)

if (size == 0 && (op = nullstring) != NULL) {
#ifdef COUNT_ALLOCS
null_strings++;
_Py_null_strings++;
#endif
Py_INCREF(op);
return (PyObject *)op;
Expand Down Expand Up @@ -110,7 +110,7 @@ PyBytes_FromStringAndSize(const char *str, Py_ssize_t size)
(op = characters[*str & UCHAR_MAX]) != NULL)
{
#ifdef COUNT_ALLOCS
one_strings++;
_Py_one_strings++;
#endif
Py_INCREF(op);
return (PyObject *)op;
Expand Down Expand Up @@ -146,14 +146,14 @@ PyBytes_FromString(const char *str)
}
if (size == 0 && (op = nullstring) != NULL) {
#ifdef COUNT_ALLOCS
null_strings++;
_Py_null_strings++;
#endif
Py_INCREF(op);
return (PyObject *)op;
}
if (size == 1 && (op = characters[*str & UCHAR_MAX]) != NULL) {
#ifdef COUNT_ALLOCS
one_strings++;
_Py_one_strings++;
#endif
Py_INCREF(op);
return (PyObject *)op;
Expand Down
6 changes: 3 additions & 3 deletions Objects/longobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ PyObject *_PyLong_One = NULL;
*/
static PyLongObject small_ints[NSMALLNEGINTS + NSMALLPOSINTS];
#ifdef COUNT_ALLOCS
Py_ssize_t quick_int_allocs, quick_neg_int_allocs;
Py_ssize_t _Py_quick_int_allocs, _Py_quick_neg_int_allocs;
#endif

static PyObject *
Expand All @@ -54,9 +54,9 @@ get_small_int(sdigit ival)
Py_INCREF(v);
#ifdef COUNT_ALLOCS
if (ival >= 0)
quick_int_allocs++;
_Py_quick_int_allocs++;
else
quick_neg_int_allocs++;
_Py_quick_neg_int_allocs++;
#endif
return v;
}
Expand Down
22 changes: 11 additions & 11 deletions Objects/object.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,11 @@ static PyTypeObject *type_list;
is set, they will be removed from the type_list
once the last object is deallocated. */
static int unlist_types_without_objects;
extern Py_ssize_t tuple_zero_allocs, fast_tuple_allocs;
extern Py_ssize_t quick_int_allocs, quick_neg_int_allocs;
extern Py_ssize_t null_strings, one_strings;
extern Py_ssize_t _Py_tuple_zero_allocs, _Py_fast_tuple_allocs;
extern Py_ssize_t _Py_quick_int_allocs, _Py_quick_neg_int_allocs;
extern Py_ssize_t _Py_null_strings, _Py_one_strings;
void
dump_counts(FILE* f)
_Py_dump_counts(FILE* f)
{
PyInterpreterState *interp = _PyInterpreterState_Get();
if (!interp->core_config.show_alloc_count) {
Expand All @@ -113,17 +113,17 @@ dump_counts(FILE* f)
tp->tp_maxalloc);
fprintf(f, "fast tuple allocs: %" PY_FORMAT_SIZE_T "d, "
"empty: %" PY_FORMAT_SIZE_T "d\n",
fast_tuple_allocs, tuple_zero_allocs);
_Py_fast_tuple_allocs, _Py_tuple_zero_allocs);
fprintf(f, "fast int allocs: pos: %" PY_FORMAT_SIZE_T "d, "
"neg: %" PY_FORMAT_SIZE_T "d\n",
quick_int_allocs, quick_neg_int_allocs);
_Py_quick_int_allocs, _Py_quick_neg_int_allocs);
fprintf(f, "null strings: %" PY_FORMAT_SIZE_T "d, "
"1-strings: %" PY_FORMAT_SIZE_T "d\n",
null_strings, one_strings);
_Py_null_strings, _Py_one_strings);
}

PyObject *
get_counts(void)
_Py_get_counts(void)
{
PyTypeObject *tp;
PyObject *result;
Expand All @@ -150,12 +150,12 @@ get_counts(void)
}

void
inc_count(PyTypeObject *tp)
_Py_inc_count(PyTypeObject *tp)
{
if (tp->tp_next == NULL && tp->tp_prev == NULL) {
/* first time; insert in linked list */
if (tp->tp_next != NULL) /* sanity check */
Py_FatalError("XXX inc_count sanity check");
Py_FatalError("XXX _Py_inc_count sanity check");
if (type_list)
type_list->tp_prev = tp;
tp->tp_next = type_list;
Expand All @@ -181,7 +181,7 @@ inc_count(PyTypeObject *tp)
tp->tp_maxalloc = tp->tp_allocs - tp->tp_frees;
}

void dec_count(PyTypeObject *tp)
void _Py_dec_count(PyTypeObject *tp)
{
tp->tp_frees++;
if (unlist_types_without_objects &&
Expand Down
8 changes: 4 additions & 4 deletions Objects/tupleobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ static PyTupleObject *free_list[PyTuple_MAXSAVESIZE];
static int numfree[PyTuple_MAXSAVESIZE];
#endif
#ifdef COUNT_ALLOCS
Py_ssize_t fast_tuple_allocs;
Py_ssize_t tuple_zero_allocs;
Py_ssize_t _Py_fast_tuple_allocs;
Py_ssize_t _Py_tuple_zero_allocs;
#endif

/* Debug statistic to count GC tracking of tuples.
Expand Down Expand Up @@ -89,15 +89,15 @@ PyTuple_New(Py_ssize_t size)
op = free_list[0];
Py_INCREF(op);
#ifdef COUNT_ALLOCS
tuple_zero_allocs++;
_Py_tuple_zero_allocs++;
#endif
return (PyObject *) op;
}
if (size < PyTuple_MAXSAVESIZE && (op = free_list[size]) != NULL) {
free_list[size] = (PyTupleObject *) op->ob_item[0];
numfree[size]--;
#ifdef COUNT_ALLOCS
fast_tuple_allocs++;
_Py_fast_tuple_allocs++;
#endif
/* Inline PyObject_InitVar */
#ifdef Py_TRACE_REFS
Expand Down
4 changes: 2 additions & 2 deletions Python/pylifecycle.c
Original file line number Diff line number Diff line change
Expand Up @@ -929,7 +929,7 @@ Py_Initialize(void)


#ifdef COUNT_ALLOCS
extern void dump_counts(FILE*);
extern void _Py_dump_counts(FILE*);
#endif

/* Flush stdout and stderr */
Expand Down Expand Up @@ -1112,7 +1112,7 @@ Py_FinalizeEx(void)

/* Debugging stuff */
#ifdef COUNT_ALLOCS
dump_counts(stderr);
_Py_dump_counts(stderr);
#endif
/* dump hash stats */
_PyHash_Fini();
Expand Down
4 changes: 2 additions & 2 deletions Python/sysmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -1340,9 +1340,9 @@ size."
static PyObject *
sys_getcounts(PyObject *self)
{
extern PyObject *get_counts(void);
extern PyObject *_Py_get_counts(void);

return get_counts();
return _Py_get_counts();
}
#endif

Expand Down