Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
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
1 change: 1 addition & 0 deletions 1 Include/Python.h
Original file line number Diff line number Diff line change
Expand Up @@ -137,5 +137,6 @@
#include "dtoa.h"
#include "fileutils.h"
#include "pyfpe.h"
#include "tracemalloc.h"

#endif /* !Py_PYTHON_H */
3 changes: 3 additions & 0 deletions 3 Include/object.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#ifndef Py_OBJECT_H
#define Py_OBJECT_H

#include "pymem.h" /* _Py_tracemalloc_config */

#ifdef __cplusplus
extern "C" {
#endif
Expand Down
40 changes: 3 additions & 37 deletions 40 Include/pymem.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,42 +24,6 @@ PyAPI_FUNC(int) _PyMem_SetupAllocators(const char *opt);
/* Try to get the allocators name set by _PyMem_SetupAllocators(). */
PyAPI_FUNC(const char*) _PyMem_GetAllocatorsName(void);

/* Track an allocated memory block in the tracemalloc module.
Return 0 on success, return -1 on error (failed to allocate memory to store
the trace).

Return -2 if tracemalloc is disabled.

If memory block is already tracked, update the existing trace. */
PyAPI_FUNC(int) PyTraceMalloc_Track(
unsigned int domain,
uintptr_t ptr,
size_t size);

/* Update the Python traceback of an object.
This function can be used when a memory block is reused from a free list. */
PyAPI_FUNC(int) _PyTraceMalloc_NewReference(PyObject *op);

/* Untrack an allocated memory block in the tracemalloc module.
Do nothing if the block was not tracked.

Return -2 if tracemalloc is disabled, otherwise return 0. */
PyAPI_FUNC(int) PyTraceMalloc_Untrack(
unsigned int domain,
uintptr_t ptr);

/* Get the traceback where a memory block was allocated.

Return a tuple of (filename: str, lineno: int) tuples.

Return None if the tracemalloc module is disabled or if the memory block
is not tracked by tracemalloc.

Raise an exception and return NULL on error. */
PyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback(
unsigned int domain,
uintptr_t ptr);

PyAPI_FUNC(int) _PyMem_IsFreed(void *ptr, size_t size);
#endif /* !defined(Py_LIMITED_API) */

Expand Down Expand Up @@ -246,7 +210,9 @@ PyAPI_FUNC(int) _PyMem_SetDefaultAllocator(

/* bpo-35053: expose _Py_tracemalloc_config for performance:
_Py_NewReference() needs an efficient check to test if tracemalloc is
tracing. */
tracing.

It has to be defined in pymem.h, before object.h is included. */
struct _PyTraceMalloc_Config {
/* Module initialized?
Variable protected by the GIL */
Expand Down
42 changes: 42 additions & 0 deletions 42 Include/tracemalloc.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#ifndef Py_TRACEMALLOC_H
#define Py_TRACEMALLOC_H

#ifndef Py_LIMITED_API
/* Track an allocated memory block in the tracemalloc module.
Return 0 on success, return -1 on error (failed to allocate memory to store
the trace).

Return -2 if tracemalloc is disabled.

If memory block is already tracked, update the existing trace. */
PyAPI_FUNC(int) PyTraceMalloc_Track(
unsigned int domain,
uintptr_t ptr,
size_t size);

/* Update the Python traceback of an object.
This function can be used when a memory block is reused from a free list. */
PyAPI_FUNC(int) _PyTraceMalloc_NewReference(PyObject *op);

/* Untrack an allocated memory block in the tracemalloc module.
Do nothing if the block was not tracked.

Return -2 if tracemalloc is disabled, otherwise return 0. */
PyAPI_FUNC(int) PyTraceMalloc_Untrack(
unsigned int domain,
uintptr_t ptr);

/* Get the traceback where a memory block was allocated.

Return a tuple of (filename: str, lineno: int) tuples.

Return None if the tracemalloc module is disabled or if the memory block
is not tracked by tracemalloc.

Raise an exception and return NULL on error. */
PyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback(
unsigned int domain,
uintptr_t ptr);
#endif

#endif /* !Py_TRACEMALLOC_H */
1 change: 1 addition & 0 deletions 1 Makefile.pre.in
Original file line number Diff line number Diff line change
Expand Up @@ -1017,6 +1017,7 @@ PYTHON_HEADERS= \
$(srcdir)/Include/symtable.h \
$(srcdir)/Include/sysmodule.h \
$(srcdir)/Include/traceback.h \
$(srcdir)/Include/tracemalloc.h \
$(srcdir)/Include/tupleobject.h \
$(srcdir)/Include/ucnhash.h \
$(srcdir)/Include/unicodeobject.h \
Expand Down
1 change: 1 addition & 0 deletions 1 PCbuild/pythoncore.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@
<ClInclude Include="..\Include\sysmodule.h" />
<ClInclude Include="..\Include\token.h" />
<ClInclude Include="..\Include\traceback.h" />
<ClInclude Include="..\Include\tracemalloc.h" />
<ClInclude Include="..\Include\tupleobject.h" />
<ClInclude Include="..\Include\ucnhash.h" />
<ClInclude Include="..\Include\unicodeobject.h" />
Expand Down
3 changes: 3 additions & 0 deletions 3 PCbuild/pythoncore.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,9 @@
<ClInclude Include="..\Include\traceback.h">
<Filter>Include</Filter>
</ClInclude>
<ClInclude Include="..\Include\tracemalloc.h">
<Filter>Include</Filter>
</ClInclude>
<ClInclude Include="..\Include\tupleobject.h">
<Filter>Include</Filter>
</ClInclude>
Expand Down
Morty Proxy This is a proxified and sanitized view of the page, visit original site.