summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-07-22 15:04:34 (GMT)
committerGitHub <noreply@github.com>2023-07-22 15:04:34 (GMT)
commit5e4af2a3e90d78fdf6a4cc42e0472576b1f2b975 (patch)
tree288d255165674d6464a2739cf5254cc83561d9c5
parentc92ef6fe0e1384c090b94143cdc01e5e114a8747 (diff)
downloadcpython-5e4af2a3e90d78fdf6a4cc42e0472576b1f2b975.zip
cpython-5e4af2a3e90d78fdf6a4cc42e0472576b1f2b975.tar.gz
cpython-5e4af2a3e90d78fdf6a4cc42e0472576b1f2b975.tar.bz2
gh-106320: Move private _PySet API to the internal API (#107041)
* Add pycore_setobject.h header file. * Move the following API to the internal C API: * _PySet_Dummy * _PySet_NextEntry() * _PySet_Update()
-rw-r--r--Include/cpython/setobject.h5
-rw-r--r--Include/internal/pycore_pymem.h2
-rw-r--r--Include/internal/pycore_setobject.h25
-rw-r--r--Makefile.pre.in1
-rw-r--r--Modules/_abc.c1
-rw-r--r--Modules/_pickle.c1
-rw-r--r--Objects/codeobject.c1
-rw-r--r--Objects/dictobject.c1
-rw-r--r--Objects/setobject.c1
-rw-r--r--PCbuild/pythoncore.vcxproj1
-rw-r--r--PCbuild/pythoncore.vcxproj.filters3
-rw-r--r--Python/ast_opt.c5
-rw-r--r--Python/bytecodes.c7
-rw-r--r--Python/ceval.c7
-rw-r--r--Python/compile.c3
-rw-r--r--Python/executor.c1
-rw-r--r--Python/marshal.c3
-rw-r--r--Python/pylifecycle.c1
18 files changed, 53 insertions, 16 deletions
diff --git a/Include/cpython/setobject.h b/Include/cpython/setobject.h
index 20fd63e..1778c77 100644
--- a/Include/cpython/setobject.h
+++ b/Include/cpython/setobject.h
@@ -65,8 +65,3 @@ static inline Py_ssize_t PySet_GET_SIZE(PyObject *so) {
return _PySet_CAST(so)->used;
}
#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
-
-PyAPI_DATA(PyObject *) _PySet_Dummy;
-
-PyAPI_FUNC(int) _PySet_NextEntry(PyObject *set, Py_ssize_t *pos, PyObject **key, Py_hash_t *hash);
-PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable);
diff --git a/Include/internal/pycore_pymem.h b/Include/internal/pycore_pymem.h
index 81a707a..c2f0325 100644
--- a/Include/internal/pycore_pymem.h
+++ b/Include/internal/pycore_pymem.h
@@ -95,4 +95,4 @@ PyAPI_FUNC(int) _PyMem_SetupAllocators(PyMemAllocatorName allocator);
#ifdef __cplusplus
}
#endif
-#endif /* !Py_INTERNAL_PYMEM_H */
+#endif // !Py_INTERNAL_PYMEM_H
diff --git a/Include/internal/pycore_setobject.h b/Include/internal/pycore_setobject.h
new file mode 100644
index 0000000..96f9aea
--- /dev/null
+++ b/Include/internal/pycore_setobject.h
@@ -0,0 +1,25 @@
+#ifndef Py_INTERNAL_SETOBJECT_H
+#define Py_INTERNAL_SETOBJECT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef Py_BUILD_CORE
+# error "this header requires Py_BUILD_CORE define"
+#endif
+
+// _pickle shared extension uses _PySet_NextEntry() and _PySet_Update()
+PyAPI_FUNC(int) _PySet_NextEntry(
+ PyObject *set,
+ Py_ssize_t *pos,
+ PyObject **key,
+ Py_hash_t *hash);
+PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable);
+
+// Export _PySet_Dummy for the gdb plugin's benefit
+PyAPI_DATA(PyObject *) _PySet_Dummy;
+
+#ifdef __cplusplus
+}
+#endif
+#endif // !Py_INTERNAL_SETOBJECT_H
diff --git a/Makefile.pre.in b/Makefile.pre.in
index f3a0db1..a4f76ea 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1798,6 +1798,7 @@ PYTHON_HEADERS= \
$(srcdir)/Include/internal/pycore_runtime.h \
$(srcdir)/Include/internal/pycore_runtime_init_generated.h \
$(srcdir)/Include/internal/pycore_runtime_init.h \
+ $(srcdir)/Include/internal/pycore_setobject.h \
$(srcdir)/Include/internal/pycore_signal.h \
$(srcdir)/Include/internal/pycore_sliceobject.h \
$(srcdir)/Include/internal/pycore_strhex.h \
diff --git a/Modules/_abc.c b/Modules/_abc.c
index 8a3aa9c..9473905 100644
--- a/Modules/_abc.c
+++ b/Modules/_abc.c
@@ -7,6 +7,7 @@
#include "pycore_moduleobject.h" // _PyModule_GetState()
#include "pycore_object.h" // _PyType_GetSubclasses()
#include "pycore_runtime.h" // _Py_ID()
+#include "pycore_setobject.h" // _PySet_NextEntry()
#include "pycore_typeobject.h" // _PyType_GetMRO()
#include "pycore_weakref.h" // _PyWeakref_GET_REF()
#include "clinic/_abc.c.h"
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index f2e98c1..d9395e3 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -15,6 +15,7 @@
#include "pycore_object.h" // _PyNone_Type
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_runtime.h" // _Py_ID()
+#include "pycore_setobject.h" // _PySet_NextEntry()
#include "structmember.h" // PyMemberDef
#include <stdlib.h> // strtol()
diff --git a/Objects/codeobject.c b/Objects/codeobject.c
index d2670c7..977e5b0 100644
--- a/Objects/codeobject.c
+++ b/Objects/codeobject.c
@@ -8,6 +8,7 @@
#include "pycore_interp.h" // PyInterpreterState.co_extra_freefuncs
#include "pycore_opcode.h" // _PyOpcode_Deopt
#include "pycore_pystate.h" // _PyInterpreterState_GET()
+#include "pycore_setobject.h" // _PySet_NextEntry()
#include "pycore_tuple.h" // _PyTuple_ITEMS()
#include "clinic/codeobject.c.h"
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 3f9297c..26e2dc3 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -121,6 +121,7 @@ As a consequence of this, split keys have a maximum size of 16.
#include "pycore_object.h" // _PyObject_GC_TRACK()
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_setobject.h" // _PySet_NextEntry()
#include "stringlib/eq.h" // unicode_eq()
#include <stdbool.h>
diff --git a/Objects/setobject.c b/Objects/setobject.c
index 4ac541b..2f12320 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -34,6 +34,7 @@
#include "Python.h"
#include "pycore_modsupport.h" // _PyArg_NoKwnames()
#include "pycore_object.h" // _PyObject_GC_UNTRACK()
+#include "pycore_setobject.h" // _PySet_NextEntry() definition
#include <stddef.h> // offsetof()
/* Object used as dummy key to fill deleted entries */
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index 0fe2408..bfe59ac 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -261,6 +261,7 @@
<ClInclude Include="..\Include\internal\pycore_runtime.h" />
<ClInclude Include="..\Include\internal\pycore_runtime_init.h" />
<ClInclude Include="..\Include\internal\pycore_runtime_init_generated.h" />
+ <ClInclude Include="..\Include\internal\pycore_setobject.h" />
<ClInclude Include="..\Include\internal\pycore_signal.h" />
<ClInclude Include="..\Include\internal\pycore_sliceobject.h" />
<ClInclude Include="..\Include\internal\pycore_strhex.h" />
diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters
index 2b3793c..0a8b0c3 100644
--- a/PCbuild/pythoncore.vcxproj.filters
+++ b/PCbuild/pythoncore.vcxproj.filters
@@ -687,6 +687,9 @@
<ClInclude Include="..\Include\internal\pycore_runtime_init_generated.h">
<Filter>Include\internal</Filter>
</ClInclude>
+ <ClInclude Include="..\Include\internal\pycore_setobject.h">
+ <Filter>Include\internal</Filter>
+ </ClInclude>
<ClInclude Include="..\Include\internal\pycore_signal.h">
<Filter>Include\internal</Filter>
</ClInclude>
diff --git a/Python/ast_opt.c b/Python/ast_opt.c
index 276e910..ad1e312 100644
--- a/Python/ast_opt.c
+++ b/Python/ast_opt.c
@@ -1,9 +1,10 @@
/* AST Optimizer */
#include "Python.h"
#include "pycore_ast.h" // _PyAST_GetDocString()
-#include "pycore_long.h" // _PyLong
-#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_format.h" // F_LJUST
+#include "pycore_long.h" // _PyLong
+#include "pycore_pystate.h" // _PyThreadState_GET()
+#include "pycore_setobject.h" // _PySet_NextEntry()
typedef struct {
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index 3a191ac..7ce8978 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -10,23 +10,24 @@
#include "pycore_abstract.h" // _PyIndex_Check()
#include "pycore_ceval.h" // _PyEval_SignalAsyncExc()
#include "pycore_code.h"
+#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
#include "pycore_function.h"
+#include "pycore_instruments.h"
#include "pycore_intrinsics.h"
#include "pycore_long.h" // _PyLong_GetZero()
-#include "pycore_instruments.h"
-#include "pycore_object.h" // _PyObject_GC_TRACK()
#include "pycore_moduleobject.h" // PyModuleObject
+#include "pycore_object.h" // _PyObject_GC_TRACK()
#include "pycore_opcode.h" // EXTRA_CASES
#include "pycore_opcode_metadata.h" // uop names
#include "pycore_opcode_utils.h" // MAKE_FUNCTION_*
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
#include "pycore_pystate.h" // _PyInterpreterState_GET()
#include "pycore_range.h" // _PyRangeIterObject
+#include "pycore_setobject.h" // _PySet_NextEntry()
#include "pycore_sliceobject.h" // _PyBuildSlice_ConsumeRefs
#include "pycore_sysmodule.h" // _PySys_Audit()
#include "pycore_tuple.h" // _PyTuple_ITEMS()
#include "pycore_typeobject.h" // _PySuper_Lookup()
-#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
#include "pycore_dict.h"
#include "dictobject.h"
diff --git a/Python/ceval.c b/Python/ceval.c
index 9f2855f..e9f082f 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -7,24 +7,25 @@
#include "pycore_call.h" // _PyObject_CallNoArgs()
#include "pycore_ceval.h" // _PyEval_SignalAsyncExc()
#include "pycore_code.h"
+#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
#include "pycore_function.h"
+#include "pycore_instruments.h"
#include "pycore_intrinsics.h"
#include "pycore_long.h" // _PyLong_GetZero()
-#include "pycore_instruments.h"
-#include "pycore_object.h" // _PyObject_GC_TRACK()
#include "pycore_moduleobject.h" // PyModuleObject
+#include "pycore_object.h" // _PyObject_GC_TRACK()
#include "pycore_opcode.h" // EXTRA_CASES
#include "pycore_opcode_metadata.h"
#include "pycore_opcode_utils.h" // MAKE_FUNCTION_*
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
#include "pycore_pystate.h" // _PyInterpreterState_GET()
#include "pycore_range.h" // _PyRangeIterObject
+#include "pycore_setobject.h" // _PySet_Update()
#include "pycore_sliceobject.h" // _PyBuildSlice_ConsumeRefs
#include "pycore_sysmodule.h" // _PySys_Audit()
#include "pycore_tuple.h" // _PyTuple_ITEMS()
#include "pycore_typeobject.h" // _PySuper_Lookup()
#include "pycore_uops.h" // _PyUOpExecutorObject
-#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
#include "pycore_dict.h"
#include "dictobject.h"
diff --git a/Python/compile.c b/Python/compile.c
index 9a13ab5..6001187 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -28,12 +28,13 @@
#define NEED_OPCODE_TABLES
#include "pycore_opcode_utils.h"
#undef NEED_OPCODE_TABLES
-#include "pycore_flowgraph.h"
#include "pycore_code.h" // _PyCode_New()
#include "pycore_compile.h"
+#include "pycore_flowgraph.h"
#include "pycore_intrinsics.h"
#include "pycore_long.h" // _PyLong_GetZero()
#include "pycore_pystate.h" // _Py_GetConfig()
+#include "pycore_setobject.h" // _PySet_NextEntry()
#include "pycore_symtable.h" // PySTEntryObject, _PyFuture_FromAST()
#define NEED_OPCODE_METADATA
diff --git a/Python/executor.c b/Python/executor.c
index 1732252..57525df 100644
--- a/Python/executor.c
+++ b/Python/executor.c
@@ -11,6 +11,7 @@
#include "pycore_opcode_utils.h"
#include "pycore_pyerrors.h"
#include "pycore_range.h"
+#include "pycore_setobject.h" // _PySet_Update()
#include "pycore_sliceobject.h"
#include "pycore_uops.h"
diff --git a/Python/marshal.c b/Python/marshal.c
index 517220a..8940582 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -9,8 +9,9 @@
#include "Python.h"
#include "pycore_call.h" // _PyObject_CallNoArgs()
#include "pycore_code.h" // _PyCode_New()
-#include "pycore_long.h" // _PyLong_DigitCount
#include "pycore_hashtable.h" // _Py_hashtable_t
+#include "pycore_long.h" // _PyLong_DigitCount
+#include "pycore_setobject.h" // _PySet_NextEntry()
#include "marshal.h" // Py_MARSHAL_VERSION
/*[clinic input]
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index f91fac9..ceca777 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -24,6 +24,7 @@
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_runtime.h" // _Py_ID()
#include "pycore_runtime_init.h" // _PyRuntimeState_INIT
+#include "pycore_setobject.h" // _PySet_NextEntry()
#include "pycore_sliceobject.h" // _PySlice_Fini()
#include "pycore_sysmodule.h" // _PySys_ClearAuditHooks()
#include "pycore_traceback.h" // _Py_DumpTracebackThreads()