summaryrefslogtreecommitdiffstats
path: root/Modules/_testinternalcapi.c
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2022-08-24 10:02:53 (GMT)
committerGitHub <noreply@github.com>2022-08-24 10:02:53 (GMT)
commit420f39f457a97a9379f8423a81776bef428d0746 (patch)
tree9f82619ae6d7b39f3342f2b960240c6912447422 /Modules/_testinternalcapi.c
parent6bda5b85b53443f3467865fbf85cbe72932e7cd6 (diff)
downloadcpython-420f39f457a97a9379f8423a81776bef428d0746.zip
cpython-420f39f457a97a9379f8423a81776bef428d0746.tar.gz
cpython-420f39f457a97a9379f8423a81776bef428d0746.tar.bz2
gh-93678: add _testinternalcapi.optimize_cfg() and test utils for compiler optimization unit tests (GH-96007)
Diffstat (limited to 'Modules/_testinternalcapi.c')
-rw-r--r--Modules/_testinternalcapi.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c
index 238de74..9d92b07 100644
--- a/Modules/_testinternalcapi.c
+++ b/Modules/_testinternalcapi.c
@@ -14,6 +14,7 @@
#include "Python.h"
#include "pycore_atomic_funcs.h" // _Py_atomic_int_get()
#include "pycore_bitutils.h" // _Py_bswap32()
+#include "pycore_compile.h" // _PyCompile_OptimizeCfg()
#include "pycore_fileutils.h" // _Py_normpath
#include "pycore_frame.h" // _PyInterpreterFrame
#include "pycore_gc.h" // PyGC_Head
@@ -25,7 +26,12 @@
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "osdefs.h" // MAXPATHLEN
+#include "clinic/_testinternalcapi.c.h"
+/*[clinic input]
+module _testinternalcapi
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=7bb583d8c9eb9a78]*/
static PyObject *
get_configs(PyObject *self, PyObject *Py_UNUSED(args))
{
@@ -525,6 +531,25 @@ set_eval_frame_record(PyObject *self, PyObject *list)
}
+/*[clinic input]
+
+_testinternalcapi.optimize_cfg -> object
+
+ instructions: object
+ consts: object
+
+Apply compiler optimizations to an instruction list.
+[clinic start generated code]*/
+
+static PyObject *
+_testinternalcapi_optimize_cfg_impl(PyObject *module, PyObject *instructions,
+ PyObject *consts)
+/*[clinic end generated code: output=5412aeafca683c8b input=7e8a3de86ebdd0f9]*/
+{
+ return _PyCompile_OptimizeCfg(instructions, consts);
+}
+
+
static PyMethodDef TestMethods[] = {
{"get_configs", get_configs, METH_NOARGS},
{"get_recursion_depth", get_recursion_depth, METH_NOARGS},
@@ -543,6 +568,7 @@ static PyMethodDef TestMethods[] = {
{"DecodeLocaleEx", decode_locale_ex, METH_VARARGS},
{"set_eval_frame_default", set_eval_frame_default, METH_NOARGS, NULL},
{"set_eval_frame_record", set_eval_frame_record, METH_O, NULL},
+ _TESTINTERNALCAPI_OPTIMIZE_CFG_METHODDEF
{NULL, NULL} /* sentinel */
};