mirror of https://github.com/python/cpython
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()
This commit is contained in:
parent
c92ef6fe0e
commit
5e4af2a3e9
|
@ -65,8 +65,3 @@ static inline Py_ssize_t PySet_GET_SIZE(PyObject *so) {
|
||||||
return _PySet_CAST(so)->used;
|
return _PySet_CAST(so)->used;
|
||||||
}
|
}
|
||||||
#define PySet_GET_SIZE(so) PySet_GET_SIZE(_PyObject_CAST(so))
|
#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);
|
|
||||||
|
|
|
@ -95,4 +95,4 @@ PyAPI_FUNC(int) _PyMem_SetupAllocators(PyMemAllocatorName allocator);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif /* !Py_INTERNAL_PYMEM_H */
|
#endif // !Py_INTERNAL_PYMEM_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
|
|
@ -1798,6 +1798,7 @@ PYTHON_HEADERS= \
|
||||||
$(srcdir)/Include/internal/pycore_runtime.h \
|
$(srcdir)/Include/internal/pycore_runtime.h \
|
||||||
$(srcdir)/Include/internal/pycore_runtime_init_generated.h \
|
$(srcdir)/Include/internal/pycore_runtime_init_generated.h \
|
||||||
$(srcdir)/Include/internal/pycore_runtime_init.h \
|
$(srcdir)/Include/internal/pycore_runtime_init.h \
|
||||||
|
$(srcdir)/Include/internal/pycore_setobject.h \
|
||||||
$(srcdir)/Include/internal/pycore_signal.h \
|
$(srcdir)/Include/internal/pycore_signal.h \
|
||||||
$(srcdir)/Include/internal/pycore_sliceobject.h \
|
$(srcdir)/Include/internal/pycore_sliceobject.h \
|
||||||
$(srcdir)/Include/internal/pycore_strhex.h \
|
$(srcdir)/Include/internal/pycore_strhex.h \
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "pycore_moduleobject.h" // _PyModule_GetState()
|
#include "pycore_moduleobject.h" // _PyModule_GetState()
|
||||||
#include "pycore_object.h" // _PyType_GetSubclasses()
|
#include "pycore_object.h" // _PyType_GetSubclasses()
|
||||||
#include "pycore_runtime.h" // _Py_ID()
|
#include "pycore_runtime.h" // _Py_ID()
|
||||||
|
#include "pycore_setobject.h" // _PySet_NextEntry()
|
||||||
#include "pycore_typeobject.h" // _PyType_GetMRO()
|
#include "pycore_typeobject.h" // _PyType_GetMRO()
|
||||||
#include "pycore_weakref.h" // _PyWeakref_GET_REF()
|
#include "pycore_weakref.h" // _PyWeakref_GET_REF()
|
||||||
#include "clinic/_abc.c.h"
|
#include "clinic/_abc.c.h"
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "pycore_object.h" // _PyNone_Type
|
#include "pycore_object.h" // _PyNone_Type
|
||||||
#include "pycore_pystate.h" // _PyThreadState_GET()
|
#include "pycore_pystate.h" // _PyThreadState_GET()
|
||||||
#include "pycore_runtime.h" // _Py_ID()
|
#include "pycore_runtime.h" // _Py_ID()
|
||||||
|
#include "pycore_setobject.h" // _PySet_NextEntry()
|
||||||
#include "structmember.h" // PyMemberDef
|
#include "structmember.h" // PyMemberDef
|
||||||
|
|
||||||
#include <stdlib.h> // strtol()
|
#include <stdlib.h> // strtol()
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "pycore_interp.h" // PyInterpreterState.co_extra_freefuncs
|
#include "pycore_interp.h" // PyInterpreterState.co_extra_freefuncs
|
||||||
#include "pycore_opcode.h" // _PyOpcode_Deopt
|
#include "pycore_opcode.h" // _PyOpcode_Deopt
|
||||||
#include "pycore_pystate.h" // _PyInterpreterState_GET()
|
#include "pycore_pystate.h" // _PyInterpreterState_GET()
|
||||||
|
#include "pycore_setobject.h" // _PySet_NextEntry()
|
||||||
#include "pycore_tuple.h" // _PyTuple_ITEMS()
|
#include "pycore_tuple.h" // _PyTuple_ITEMS()
|
||||||
#include "clinic/codeobject.c.h"
|
#include "clinic/codeobject.c.h"
|
||||||
|
|
||||||
|
|
|
@ -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_object.h" // _PyObject_GC_TRACK()
|
||||||
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
|
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
|
||||||
#include "pycore_pystate.h" // _PyThreadState_GET()
|
#include "pycore_pystate.h" // _PyThreadState_GET()
|
||||||
|
#include "pycore_setobject.h" // _PySet_NextEntry()
|
||||||
#include "stringlib/eq.h" // unicode_eq()
|
#include "stringlib/eq.h" // unicode_eq()
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
#include "pycore_modsupport.h" // _PyArg_NoKwnames()
|
#include "pycore_modsupport.h" // _PyArg_NoKwnames()
|
||||||
#include "pycore_object.h" // _PyObject_GC_UNTRACK()
|
#include "pycore_object.h" // _PyObject_GC_UNTRACK()
|
||||||
|
#include "pycore_setobject.h" // _PySet_NextEntry() definition
|
||||||
#include <stddef.h> // offsetof()
|
#include <stddef.h> // offsetof()
|
||||||
|
|
||||||
/* Object used as dummy key to fill deleted entries */
|
/* Object used as dummy key to fill deleted entries */
|
||||||
|
|
|
@ -261,6 +261,7 @@
|
||||||
<ClInclude Include="..\Include\internal\pycore_runtime.h" />
|
<ClInclude Include="..\Include\internal\pycore_runtime.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_runtime_init.h" />
|
<ClInclude Include="..\Include\internal\pycore_runtime_init.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_runtime_init_generated.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_signal.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_sliceobject.h" />
|
<ClInclude Include="..\Include\internal\pycore_sliceobject.h" />
|
||||||
<ClInclude Include="..\Include\internal\pycore_strhex.h" />
|
<ClInclude Include="..\Include\internal\pycore_strhex.h" />
|
||||||
|
|
|
@ -687,6 +687,9 @@
|
||||||
<ClInclude Include="..\Include\internal\pycore_runtime_init_generated.h">
|
<ClInclude Include="..\Include\internal\pycore_runtime_init_generated.h">
|
||||||
<Filter>Include\internal</Filter>
|
<Filter>Include\internal</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\Include\internal\pycore_setobject.h">
|
||||||
|
<Filter>Include\internal</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\Include\internal\pycore_signal.h">
|
<ClInclude Include="..\Include\internal\pycore_signal.h">
|
||||||
<Filter>Include\internal</Filter>
|
<Filter>Include\internal</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
/* AST Optimizer */
|
/* AST Optimizer */
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
#include "pycore_ast.h" // _PyAST_GetDocString()
|
#include "pycore_ast.h" // _PyAST_GetDocString()
|
||||||
|
#include "pycore_format.h" // F_LJUST
|
||||||
#include "pycore_long.h" // _PyLong
|
#include "pycore_long.h" // _PyLong
|
||||||
#include "pycore_pystate.h" // _PyThreadState_GET()
|
#include "pycore_pystate.h" // _PyThreadState_GET()
|
||||||
#include "pycore_format.h" // F_LJUST
|
#include "pycore_setobject.h" // _PySet_NextEntry()
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -10,23 +10,24 @@
|
||||||
#include "pycore_abstract.h" // _PyIndex_Check()
|
#include "pycore_abstract.h" // _PyIndex_Check()
|
||||||
#include "pycore_ceval.h" // _PyEval_SignalAsyncExc()
|
#include "pycore_ceval.h" // _PyEval_SignalAsyncExc()
|
||||||
#include "pycore_code.h"
|
#include "pycore_code.h"
|
||||||
|
#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
|
||||||
#include "pycore_function.h"
|
#include "pycore_function.h"
|
||||||
|
#include "pycore_instruments.h"
|
||||||
#include "pycore_intrinsics.h"
|
#include "pycore_intrinsics.h"
|
||||||
#include "pycore_long.h" // _PyLong_GetZero()
|
#include "pycore_long.h" // _PyLong_GetZero()
|
||||||
#include "pycore_instruments.h"
|
|
||||||
#include "pycore_object.h" // _PyObject_GC_TRACK()
|
|
||||||
#include "pycore_moduleobject.h" // PyModuleObject
|
#include "pycore_moduleobject.h" // PyModuleObject
|
||||||
|
#include "pycore_object.h" // _PyObject_GC_TRACK()
|
||||||
#include "pycore_opcode.h" // EXTRA_CASES
|
#include "pycore_opcode.h" // EXTRA_CASES
|
||||||
#include "pycore_opcode_metadata.h" // uop names
|
#include "pycore_opcode_metadata.h" // uop names
|
||||||
#include "pycore_opcode_utils.h" // MAKE_FUNCTION_*
|
#include "pycore_opcode_utils.h" // MAKE_FUNCTION_*
|
||||||
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
|
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
|
||||||
#include "pycore_pystate.h" // _PyInterpreterState_GET()
|
#include "pycore_pystate.h" // _PyInterpreterState_GET()
|
||||||
#include "pycore_range.h" // _PyRangeIterObject
|
#include "pycore_range.h" // _PyRangeIterObject
|
||||||
|
#include "pycore_setobject.h" // _PySet_NextEntry()
|
||||||
#include "pycore_sliceobject.h" // _PyBuildSlice_ConsumeRefs
|
#include "pycore_sliceobject.h" // _PyBuildSlice_ConsumeRefs
|
||||||
#include "pycore_sysmodule.h" // _PySys_Audit()
|
#include "pycore_sysmodule.h" // _PySys_Audit()
|
||||||
#include "pycore_tuple.h" // _PyTuple_ITEMS()
|
#include "pycore_tuple.h" // _PyTuple_ITEMS()
|
||||||
#include "pycore_typeobject.h" // _PySuper_Lookup()
|
#include "pycore_typeobject.h" // _PySuper_Lookup()
|
||||||
#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
|
|
||||||
|
|
||||||
#include "pycore_dict.h"
|
#include "pycore_dict.h"
|
||||||
#include "dictobject.h"
|
#include "dictobject.h"
|
||||||
|
|
|
@ -7,24 +7,25 @@
|
||||||
#include "pycore_call.h" // _PyObject_CallNoArgs()
|
#include "pycore_call.h" // _PyObject_CallNoArgs()
|
||||||
#include "pycore_ceval.h" // _PyEval_SignalAsyncExc()
|
#include "pycore_ceval.h" // _PyEval_SignalAsyncExc()
|
||||||
#include "pycore_code.h"
|
#include "pycore_code.h"
|
||||||
|
#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
|
||||||
#include "pycore_function.h"
|
#include "pycore_function.h"
|
||||||
|
#include "pycore_instruments.h"
|
||||||
#include "pycore_intrinsics.h"
|
#include "pycore_intrinsics.h"
|
||||||
#include "pycore_long.h" // _PyLong_GetZero()
|
#include "pycore_long.h" // _PyLong_GetZero()
|
||||||
#include "pycore_instruments.h"
|
|
||||||
#include "pycore_object.h" // _PyObject_GC_TRACK()
|
|
||||||
#include "pycore_moduleobject.h" // PyModuleObject
|
#include "pycore_moduleobject.h" // PyModuleObject
|
||||||
|
#include "pycore_object.h" // _PyObject_GC_TRACK()
|
||||||
#include "pycore_opcode.h" // EXTRA_CASES
|
#include "pycore_opcode.h" // EXTRA_CASES
|
||||||
#include "pycore_opcode_metadata.h"
|
#include "pycore_opcode_metadata.h"
|
||||||
#include "pycore_opcode_utils.h" // MAKE_FUNCTION_*
|
#include "pycore_opcode_utils.h" // MAKE_FUNCTION_*
|
||||||
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
|
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
|
||||||
#include "pycore_pystate.h" // _PyInterpreterState_GET()
|
#include "pycore_pystate.h" // _PyInterpreterState_GET()
|
||||||
#include "pycore_range.h" // _PyRangeIterObject
|
#include "pycore_range.h" // _PyRangeIterObject
|
||||||
|
#include "pycore_setobject.h" // _PySet_Update()
|
||||||
#include "pycore_sliceobject.h" // _PyBuildSlice_ConsumeRefs
|
#include "pycore_sliceobject.h" // _PyBuildSlice_ConsumeRefs
|
||||||
#include "pycore_sysmodule.h" // _PySys_Audit()
|
#include "pycore_sysmodule.h" // _PySys_Audit()
|
||||||
#include "pycore_tuple.h" // _PyTuple_ITEMS()
|
#include "pycore_tuple.h" // _PyTuple_ITEMS()
|
||||||
#include "pycore_typeobject.h" // _PySuper_Lookup()
|
#include "pycore_typeobject.h" // _PySuper_Lookup()
|
||||||
#include "pycore_uops.h" // _PyUOpExecutorObject
|
#include "pycore_uops.h" // _PyUOpExecutorObject
|
||||||
#include "pycore_emscripten_signal.h" // _Py_CHECK_EMSCRIPTEN_SIGNALS
|
|
||||||
|
|
||||||
#include "pycore_dict.h"
|
#include "pycore_dict.h"
|
||||||
#include "dictobject.h"
|
#include "dictobject.h"
|
||||||
|
|
|
@ -28,12 +28,13 @@
|
||||||
#define NEED_OPCODE_TABLES
|
#define NEED_OPCODE_TABLES
|
||||||
#include "pycore_opcode_utils.h"
|
#include "pycore_opcode_utils.h"
|
||||||
#undef NEED_OPCODE_TABLES
|
#undef NEED_OPCODE_TABLES
|
||||||
#include "pycore_flowgraph.h"
|
|
||||||
#include "pycore_code.h" // _PyCode_New()
|
#include "pycore_code.h" // _PyCode_New()
|
||||||
#include "pycore_compile.h"
|
#include "pycore_compile.h"
|
||||||
|
#include "pycore_flowgraph.h"
|
||||||
#include "pycore_intrinsics.h"
|
#include "pycore_intrinsics.h"
|
||||||
#include "pycore_long.h" // _PyLong_GetZero()
|
#include "pycore_long.h" // _PyLong_GetZero()
|
||||||
#include "pycore_pystate.h" // _Py_GetConfig()
|
#include "pycore_pystate.h" // _Py_GetConfig()
|
||||||
|
#include "pycore_setobject.h" // _PySet_NextEntry()
|
||||||
#include "pycore_symtable.h" // PySTEntryObject, _PyFuture_FromAST()
|
#include "pycore_symtable.h" // PySTEntryObject, _PyFuture_FromAST()
|
||||||
|
|
||||||
#define NEED_OPCODE_METADATA
|
#define NEED_OPCODE_METADATA
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "pycore_opcode_utils.h"
|
#include "pycore_opcode_utils.h"
|
||||||
#include "pycore_pyerrors.h"
|
#include "pycore_pyerrors.h"
|
||||||
#include "pycore_range.h"
|
#include "pycore_range.h"
|
||||||
|
#include "pycore_setobject.h" // _PySet_Update()
|
||||||
#include "pycore_sliceobject.h"
|
#include "pycore_sliceobject.h"
|
||||||
#include "pycore_uops.h"
|
#include "pycore_uops.h"
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,9 @@
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
#include "pycore_call.h" // _PyObject_CallNoArgs()
|
#include "pycore_call.h" // _PyObject_CallNoArgs()
|
||||||
#include "pycore_code.h" // _PyCode_New()
|
#include "pycore_code.h" // _PyCode_New()
|
||||||
#include "pycore_long.h" // _PyLong_DigitCount
|
|
||||||
#include "pycore_hashtable.h" // _Py_hashtable_t
|
#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
|
#include "marshal.h" // Py_MARSHAL_VERSION
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "pycore_pystate.h" // _PyThreadState_GET()
|
#include "pycore_pystate.h" // _PyThreadState_GET()
|
||||||
#include "pycore_runtime.h" // _Py_ID()
|
#include "pycore_runtime.h" // _Py_ID()
|
||||||
#include "pycore_runtime_init.h" // _PyRuntimeState_INIT
|
#include "pycore_runtime_init.h" // _PyRuntimeState_INIT
|
||||||
|
#include "pycore_setobject.h" // _PySet_NextEntry()
|
||||||
#include "pycore_sliceobject.h" // _PySlice_Fini()
|
#include "pycore_sliceobject.h" // _PySlice_Fini()
|
||||||
#include "pycore_sysmodule.h" // _PySys_ClearAuditHooks()
|
#include "pycore_sysmodule.h" // _PySys_ClearAuditHooks()
|
||||||
#include "pycore_traceback.h" // _Py_DumpTracebackThreads()
|
#include "pycore_traceback.h" // _Py_DumpTracebackThreads()
|
||||||
|
|
Loading…
Reference in New Issue