Skip to content

Commit 0788b3c

Browse files
committed
Remove PyUnstable functions
Remove PyUnstable_Replace_Executor(). Rename functions: * PyUnstable_GetExecutor() => _Py_GetExecutor() * PyUnstable_GetOptimizer() => _Py_GetOptimizer() * PyUnstable_SetOptimizer() => _Py_SetOptimizerAPI() * PyUnstable_Optimizer_NewCounter() => _PyOptimizer_NewCounter() * PyUnstable_Optimizer_NewUOpOptimizer() => _PyOptimizer_NewUOpOptimizer()
1 parent 711cdc0 commit 0788b3c

File tree

5 files changed

+19
-33
lines changed

5 files changed

+19
-33
lines changed

Include/internal/pycore_optimizer.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -103,24 +103,23 @@ typedef struct {
103103
int64_t count;
104104
} _PyCounterOptimizerObject;
105105

106-
PyAPI_FUNC(int) PyUnstable_Replace_Executor(PyCodeObject *code, _Py_CODEUNIT *instr, _PyExecutorObject *executor);
107-
108106
_PyOptimizerObject *_Py_SetOptimizer(PyInterpreterState *interp, _PyOptimizerObject* optimizer);
109107

110-
PyAPI_FUNC(int) PyUnstable_SetOptimizer(_PyOptimizerObject* optimizer);
111-
112-
PyAPI_FUNC(_PyOptimizerObject *) PyUnstable_GetOptimizer(void);
113108

114-
PyAPI_FUNC(_PyExecutorObject *) PyUnstable_GetExecutor(PyCodeObject *code, int offset);
109+
extern _PyExecutorObject* _Py_GetExecutor(PyCodeObject *code, int offset);
115110

116111
void _Py_ExecutorInit(_PyExecutorObject *, const _PyBloomFilter *);
117112
void _Py_ExecutorDetach(_PyExecutorObject *);
118113
void _Py_BloomFilter_Init(_PyBloomFilter *);
119114
void _Py_BloomFilter_Add(_PyBloomFilter *bloom, void *obj);
120115
PyAPI_FUNC(void) _Py_Executor_DependsOn(_PyExecutorObject *executor, void *obj);
121-
/* For testing */
122-
PyAPI_FUNC(PyObject *)PyUnstable_Optimizer_NewCounter(void);
123-
PyAPI_FUNC(PyObject *)PyUnstable_Optimizer_NewUOpOptimizer(void);
116+
117+
// For testing
118+
// Export for '_testinternalcapi' shared extension.
119+
PyAPI_FUNC(_PyOptimizerObject *) _Py_GetOptimizer(void);
120+
PyAPI_FUNC(int) _Py_SetOptimizerAPI(_PyOptimizerObject* optimizer);
121+
PyAPI_FUNC(PyObject *) _PyOptimizer_NewCounter(void);
122+
PyAPI_FUNC(PyObject *) _PyOptimizer_NewUOpOptimizer(void);
124123

125124
#define _Py_MAX_ALLOWED_BUILTINS_MODIFICATIONS 3
126125
#define _Py_MAX_ALLOWED_GLOBALS_MODIFICATIONS 6

Misc/NEWS.d/next/C API/2024-06-19-21-27-42.gh-issue-120642.UlKClN.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
Move the following unstable functions to ``<pycore_optimizer.h>`` internal
2-
header:
1+
Remove the following unstable functions:
32

43
* ``PyUnstable_Replace_Executor()``
54
* ``PyUnstable_SetOptimizer()``

Modules/_opcode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ _opcode_get_executor_impl(PyObject *module, PyObject *code, int offset)
368368
return NULL;
369369
}
370370
#ifdef _Py_TIER2
371-
return (PyObject *)PyUnstable_GetExecutor((PyCodeObject *)code, offset);
371+
return (PyObject *)_Py_GetExecutor((PyCodeObject *)code, offset);
372372
#else
373373
PyErr_Format(PyExc_RuntimeError,
374374
"Executors are not available in this build");

Modules/_testinternalcapi.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -991,13 +991,13 @@ get_co_framesize(PyObject *self, PyObject *arg)
991991
static PyObject *
992992
new_counter_optimizer(PyObject *self, PyObject *arg)
993993
{
994-
return PyUnstable_Optimizer_NewCounter();
994+
return _PyOptimizer_NewCounter();
995995
}
996996

997997
static PyObject *
998998
new_uop_optimizer(PyObject *self, PyObject *arg)
999999
{
1000-
return PyUnstable_Optimizer_NewUOpOptimizer();
1000+
return _PyOptimizer_NewUOpOptimizer();
10011001
}
10021002

10031003
static PyObject *
@@ -1006,7 +1006,7 @@ set_optimizer(PyObject *self, PyObject *opt)
10061006
if (opt == Py_None) {
10071007
opt = NULL;
10081008
}
1009-
if (PyUnstable_SetOptimizer((_PyOptimizerObject*)opt) < 0) {
1009+
if (_Py_SetOptimizerAPI((_PyOptimizerObject*)opt) < 0) {
10101010
return NULL;
10111011
}
10121012
Py_RETURN_NONE;
@@ -1017,7 +1017,7 @@ get_optimizer(PyObject *self, PyObject *Py_UNUSED(ignored))
10171017
{
10181018
PyObject *opt = NULL;
10191019
#ifdef _Py_TIER2
1020-
opt = (PyObject *)PyUnstable_GetOptimizer();
1020+
opt = (PyObject *)_Py_GetOptimizer();
10211021
#endif
10221022
if (opt == NULL) {
10231023
Py_RETURN_NONE;

Python/optimizer.c

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -105,18 +105,6 @@ insert_executor(PyCodeObject *code, _Py_CODEUNIT *instr, int index, _PyExecutorO
105105
instr->op.arg = index;
106106
}
107107

108-
int
109-
PyUnstable_Replace_Executor(PyCodeObject *code, _Py_CODEUNIT *instr, _PyExecutorObject *new)
110-
{
111-
if (instr->op.code != ENTER_EXECUTOR) {
112-
PyErr_Format(PyExc_ValueError, "No executor to replace");
113-
return -1;
114-
}
115-
int index = instr->op.arg;
116-
assert(index >= 0);
117-
insert_executor(code, instr, index, new);
118-
return 0;
119-
}
120108

121109
static int
122110
never_optimize(
@@ -144,7 +132,7 @@ static _PyOptimizerObject _PyOptimizer_Default = {
144132
};
145133

146134
_PyOptimizerObject *
147-
PyUnstable_GetOptimizer(void)
135+
_Py_GetOptimizer(void)
148136
{
149137
PyInterpreterState *interp = _PyInterpreterState_GET();
150138
if (interp->optimizer == &_PyOptimizer_Default) {
@@ -195,7 +183,7 @@ _Py_SetOptimizer(PyInterpreterState *interp, _PyOptimizerObject *optimizer)
195183
}
196184

197185
int
198-
PyUnstable_SetOptimizer(_PyOptimizerObject *optimizer)
186+
_Py_SetOptimizerAPI(_PyOptimizerObject *optimizer)
199187
{
200188
PyInterpreterState *interp = _PyInterpreterState_GET();
201189
_PyOptimizerObject *old = _Py_SetOptimizer(interp, optimizer);
@@ -240,7 +228,7 @@ _PyOptimizer_Optimize(
240228
}
241229

242230
_PyExecutorObject *
243-
PyUnstable_GetExecutor(PyCodeObject *code, int offset)
231+
_Py_GetExecutor(PyCodeObject *code, int offset)
244232
{
245233
int code_len = (int)Py_SIZE(code);
246234
for (int i = 0 ; i < code_len;) {
@@ -1349,7 +1337,7 @@ PyTypeObject _PyUOpOptimizer_Type = {
13491337
};
13501338

13511339
PyObject *
1352-
PyUnstable_Optimizer_NewUOpOptimizer(void)
1340+
_PyOptimizer_NewUOpOptimizer(void)
13531341
{
13541342
_PyOptimizerObject *opt = PyObject_New(_PyOptimizerObject, &_PyUOpOptimizer_Type);
13551343
if (opt == NULL) {
@@ -1437,7 +1425,7 @@ PyTypeObject _PyCounterOptimizer_Type = {
14371425
};
14381426

14391427
PyObject *
1440-
PyUnstable_Optimizer_NewCounter(void)
1428+
_PyOptimizer_NewCounter(void)
14411429
{
14421430
_PyCounterOptimizerObject *opt = (_PyCounterOptimizerObject *)_PyObject_New(&_PyCounterOptimizer_Type);
14431431
if (opt == NULL) {

0 commit comments

Comments
 (0)