diff --git a/Include/descrobject.h b/Include/descrobject.h
index 3db0963..d711485 100644
--- a/Include/descrobject.h
+++ b/Include/descrobject.h
@@ -92,7 +92,7 @@
                                                struct PyGetSetDef *);
 #ifndef Py_LIMITED_API
 
-PyAPI_FUNC(PyObject *) _PyMethodDescr_FastCallKeywords(
+PyAPI_FUNC(PyObject *) _PyMethodDescr_Vectorcall(
         PyObject *descrobj, PyObject *const *args, size_t nargsf, PyObject *kwnames);
 PyAPI_FUNC(PyObject *) PyDescr_NewWrapper(PyTypeObject *,
                                                 struct wrapperbase *, void *);
diff --git a/Include/funcobject.h b/Include/funcobject.h
index 7ba000e..e563a74 100644
--- a/Include/funcobject.h
+++ b/Include/funcobject.h
@@ -66,7 +66,7 @@
     Py_ssize_t nargs,
     PyObject *kwargs);
 
-PyAPI_FUNC(PyObject *) _PyFunction_FastCallKeywords(
+PyAPI_FUNC(PyObject *) _PyFunction_Vectorcall(
     PyObject *func,
     PyObject *const *stack,
     size_t nargsf,
diff --git a/Include/methodobject.h b/Include/methodobject.h
index 5dbe214..e92adde 100644
--- a/Include/methodobject.h
+++ b/Include/methodobject.h
@@ -47,7 +47,7 @@
     Py_ssize_t nargs,
     PyObject *kwargs);
 
-PyAPI_FUNC(PyObject *) _PyCFunction_FastCallKeywords(PyObject *func,
+PyAPI_FUNC(PyObject *) _PyCFunction_Vectorcall(PyObject *func,
     PyObject *const *stack,
     size_t nargsf,
     PyObject *kwnames);
diff --git a/Objects/call.c b/Objects/call.c
index 55dfc52..acd1f26 100644
--- a/Objects/call.c
+++ b/Objects/call.c
@@ -374,8 +374,8 @@
 
 
 PyObject *
-_PyFunction_FastCallKeywords(PyObject *func, PyObject* const* stack,
-                             size_t nargsf, PyObject *kwnames)
+_PyFunction_Vectorcall(PyObject *func, PyObject* const* stack,
+                       size_t nargsf, PyObject *kwnames)
 {
     PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
     PyObject *globals = PyFunction_GET_GLOBALS(func);
@@ -714,9 +714,9 @@
 
 
 PyObject *
-_PyCFunction_FastCallKeywords(PyObject *func,
-                              PyObject *const *args, size_t nargsf,
-                              PyObject *kwnames)
+_PyCFunction_Vectorcall(PyObject *func,
+                        PyObject *const *args, size_t nargsf,
+                        PyObject *kwnames)
 {
     PyObject *result;
 
diff --git a/Objects/descrobject.c b/Objects/descrobject.c
index 7590185..3aaeaa6 100644
--- a/Objects/descrobject.c
+++ b/Objects/descrobject.c
@@ -264,9 +264,9 @@
 
 // same to methoddescr_call(), but use FASTCALL convention.
 PyObject *
-_PyMethodDescr_FastCallKeywords(PyObject *descrobj,
-                                PyObject *const *args, size_t nargsf,
-                                PyObject *kwnames)
+_PyMethodDescr_Vectorcall(PyObject *descrobj,
+                          PyObject *const *args, size_t nargsf,
+                          PyObject *kwnames)
 {
     assert(Py_TYPE(descrobj) == &PyMethodDescr_Type);
     PyMethodDescrObject *descr = (PyMethodDescrObject *)descrobj;
@@ -756,7 +756,7 @@
                                              type, method->ml_name);
     if (descr != NULL) {
         descr->d_method = method;
-        descr->vectorcall = &_PyMethodDescr_FastCallKeywords;
+        descr->vectorcall = _PyMethodDescr_Vectorcall;
     }
     return (PyObject *)descr;
 }
diff --git a/Objects/funcobject.c b/Objects/funcobject.c
index 2b1f42d..6f5b5d2 100644
--- a/Objects/funcobject.c
+++ b/Objects/funcobject.c
@@ -36,7 +36,7 @@
     op->func_defaults = NULL; /* No default arguments */
     op->func_kwdefaults = NULL; /* No keyword only defaults */
     op->func_closure = NULL;
-    op->vectorcall = _PyFunction_FastCallKeywords;
+    op->vectorcall = _PyFunction_Vectorcall;
 
     consts = ((PyCodeObject *)code)->co_consts;
     if (PyTuple_Size(consts) >= 1) {
diff --git a/Objects/methodobject.c b/Objects/methodobject.c
index 76497c9..544baee 100644
--- a/Objects/methodobject.c
+++ b/Objects/methodobject.c
@@ -52,7 +52,7 @@
         op->vectorcall = NULL;
     }
     else {
-        op->vectorcall = &_PyCFunction_FastCallKeywords;
+        op->vectorcall = _PyCFunction_Vectorcall;
     }
     _PyObject_GC_TRACK(op);
     return (PyObject *)op;
diff --git a/Python/ceval.c b/Python/ceval.c
index 47baa4d..71e6eb8 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -4815,7 +4815,7 @@
 {
     PyObject *x;
     if (PyCFunction_Check(func)) {
-        C_TRACE(x, _PyCFunction_FastCallKeywords(func, args, nargs, kwnames));
+        C_TRACE(x, _PyCFunction_Vectorcall(func, args, nargs, kwnames));
         return x;
     }
     else if (Py_TYPE(func) == &PyMethodDescr_Type && nargs > 0) {
@@ -4831,9 +4831,9 @@
         if (func == NULL) {
             return NULL;
         }
-        C_TRACE(x, _PyCFunction_FastCallKeywords(func,
-                                                 args+1, nargs-1,
-                                                 kwnames));
+        C_TRACE(x, _PyCFunction_Vectorcall(func,
+                                           args+1, nargs-1,
+                                           kwnames));
         Py_DECREF(func);
         return x;
     }
diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py
index d49546f..93f720a 100755
--- a/Tools/gdb/libpython.py
+++ b/Tools/gdb/libpython.py
@@ -1564,7 +1564,7 @@
             return False
 
         if caller in ('_PyCFunction_FastCallDict',
-                      '_PyCFunction_FastCallKeywords',
+                      '_PyCFunction_Vectorcall',
                       'cfunction_call_varargs'):
             arg_name = 'func'
             # Within that frame:
