summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2022-02-25 15:07:14 (GMT)
committerGitHub <noreply@github.com>2022-02-25 15:07:14 (GMT)
commit8f2a337a80a283c66e1a4252839792fa229d2763 (patch)
tree0497a8e2db3ceeb7e5a4960a38dcf2c7310bfdd1
parent26aba295a9c1bcb0812fe44bd7e68ddd1d8a6828 (diff)
downloadcpython-8f2a337a80a283c66e1a4252839792fa229d2763.zip
cpython-8f2a337a80a283c66e1a4252839792fa229d2763.tar.gz
cpython-8f2a337a80a283c66e1a4252839792fa229d2763.tar.bz2
bpo-45316: Move private functions to internal C API (GH-31579)
Move the unexported private functions to the internal C API: * pycore_frame.h: _PyFrame_New_NoTrack() * pycore_function.h: _PyFunction_GetVersionForCurrentState() * pycore_genobject.h: _PyAsyncGenValueWrapperNew() * pycore_genobject.h: _PyCoro_GetAwaitableIter() * pycore_genobject.h: _PyGen_yf()
-rw-r--r--Include/cpython/frameobject.h5
-rw-r--r--Include/cpython/funcobject.h2
-rw-r--r--Include/cpython/genobject.h4
-rw-r--r--Include/internal/pycore_frame.h2
-rw-r--r--Include/internal/pycore_function.h15
-rw-r--r--Include/internal/pycore_genobject.h3
-rw-r--r--Python/specialize.c3
7 files changed, 18 insertions, 16 deletions
diff --git a/Include/cpython/frameobject.h b/Include/cpython/frameobject.h
index e692096..ebaecbe 100644
--- a/Include/cpython/frameobject.h
+++ b/Include/cpython/frameobject.h
@@ -13,11 +13,6 @@ PyAPI_DATA(PyTypeObject) PyFrame_Type;
PyAPI_FUNC(PyFrameObject *) PyFrame_New(PyThreadState *, PyCodeObject *,
PyObject *, PyObject *);
-/* only internal use */
-PyFrameObject*
-_PyFrame_New_NoTrack(PyCodeObject *code);
-
-
/* The rest of the interface is specific for frame objects */
/* Conversions between "fast locals" and locals in dictionary */
diff --git a/Include/cpython/funcobject.h b/Include/cpython/funcobject.h
index 9f0560f..99ac600 100644
--- a/Include/cpython/funcobject.h
+++ b/Include/cpython/funcobject.h
@@ -82,8 +82,6 @@ PyAPI_FUNC(PyObject *) _PyFunction_Vectorcall(
size_t nargsf,
PyObject *kwnames);
-uint32_t _PyFunction_GetVersionForCurrentState(PyFunctionObject *func);
-
/* Macros for direct access to these values. Type checks are *not*
done, so use with care. */
#define PyFunction_GET_CODE(func) \
diff --git a/Include/cpython/genobject.h b/Include/cpython/genobject.h
index 838ca6c..b485ac6 100644
--- a/Include/cpython/genobject.h
+++ b/Include/cpython/genobject.h
@@ -45,7 +45,6 @@ PyAPI_FUNC(PyObject *) PyGen_NewWithQualName(PyFrameObject *,
PyObject *name, PyObject *qualname);
PyAPI_FUNC(int) _PyGen_SetStopIterationValue(PyObject *);
PyAPI_FUNC(int) _PyGen_FetchStopIterationValue(PyObject **);
-PyObject *_PyGen_yf(PyGenObject *);
PyAPI_FUNC(void) _PyGen_Finalize(PyObject *self);
@@ -59,7 +58,6 @@ PyAPI_DATA(PyTypeObject) PyCoro_Type;
PyAPI_DATA(PyTypeObject) _PyCoroWrapper_Type;
#define PyCoro_CheckExact(op) Py_IS_TYPE(op, &PyCoro_Type)
-PyObject *_PyCoro_GetAwaitableIter(PyObject *o);
PyAPI_FUNC(PyObject *) PyCoro_New(PyFrameObject *,
PyObject *name, PyObject *qualname);
@@ -80,8 +78,6 @@ PyAPI_FUNC(PyObject *) PyAsyncGen_New(PyFrameObject *,
#define PyAsyncGen_CheckExact(op) Py_IS_TYPE(op, &PyAsyncGen_Type)
-PyObject *_PyAsyncGenValueWrapperNew(PyObject *);
-
#undef _PyGenObject_HEAD
diff --git a/Include/internal/pycore_frame.h b/Include/internal/pycore_frame.h
index 09d4122..f8b8e00 100644
--- a/Include/internal/pycore_frame.h
+++ b/Include/internal/pycore_frame.h
@@ -19,6 +19,8 @@ struct _frame {
PyObject *_f_frame_data[1];
};
+extern PyFrameObject* _PyFrame_New_NoTrack(PyCodeObject *code);
+
/* runtime lifecycle */
extern void _PyFrame_Fini(PyInterpreterState *interp);
diff --git a/Include/internal/pycore_function.h b/Include/internal/pycore_function.h
index dc4422d..1c87aa3 100644
--- a/Include/internal/pycore_function.h
+++ b/Include/internal/pycore_function.h
@@ -1,11 +1,18 @@
#ifndef Py_INTERNAL_FUNCTION_H
#define Py_INTERNAL_FUNCTION_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef Py_BUILD_CORE
+# error "this header requires Py_BUILD_CORE define"
+#endif
-#include "Python.h"
-
-PyFunctionObject *
-_PyFunction_FromConstructor(PyFrameConstructor *constr);
+extern PyFunctionObject* _PyFunction_FromConstructor(PyFrameConstructor *constr);
+extern uint32_t _PyFunction_GetVersionForCurrentState(PyFunctionObject *func);
+#ifdef __cplusplus
+}
+#endif
#endif /* !Py_INTERNAL_FUNCTION_H */
diff --git a/Include/internal/pycore_genobject.h b/Include/internal/pycore_genobject.h
index 74a676d..42db0d8 100644
--- a/Include/internal/pycore_genobject.h
+++ b/Include/internal/pycore_genobject.h
@@ -8,6 +8,9 @@ extern "C" {
# error "this header requires Py_BUILD_CORE define"
#endif
+extern PyObject *_PyGen_yf(PyGenObject *);
+extern PyObject *_PyCoro_GetAwaitableIter(PyObject *o);
+extern PyObject *_PyAsyncGenValueWrapperNew(PyObject *);
/* runtime lifecycle */
diff --git a/Python/specialize.c b/Python/specialize.c
index e1db12b..1624f19 100644
--- a/Python/specialize.c
+++ b/Python/specialize.c
@@ -1,6 +1,7 @@
#include "Python.h"
#include "pycore_code.h"
#include "pycore_dict.h"
+#include "pycore_function.h" // _PyFunction_GetVersionForCurrentState()
#include "pycore_global_strings.h" // _Py_ID()
#include "pycore_long.h"
#include "pycore_moduleobject.h"
@@ -1928,7 +1929,7 @@ void
_Py_Specialize_BinaryOp(PyObject *lhs, PyObject *rhs, _Py_CODEUNIT *instr,
int oparg)
{
- assert(_PyOpcode_InlineCacheEntries[BINARY_OP] ==
+ assert(_PyOpcode_InlineCacheEntries[BINARY_OP] ==
INLINE_CACHE_ENTRIES_BINARY_OP);
_PyBinaryOpCache *cache = (_PyBinaryOpCache *)(instr + 1);
switch (oparg) {