]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Revert "bpo-46131: add fastpath for PyFloat_Check() (GH-30200)" (GH-30208)
authorRaymond Hettinger <rhettinger@users.noreply.github.com>
Sun, 19 Dec 2021 21:05:46 +0000 (15:05 -0600)
committerGitHub <noreply@github.com>
Sun, 19 Dec 2021 21:05:46 +0000 (15:05 -0600)
This reverts commit 2ef06d412531d1163dbc72877c88aedf3ed82a25.

Doc/c-api/typeobj.rst
Include/floatobject.h
Include/object.h
Misc/NEWS.d/next/C API/2021-12-19-13-02-59.bpo-46131.ZBWQtO.rst [deleted file]
Objects/floatobject.c
Objects/typeobject.c
Tools/gdb/libpython.py

index eed2ac2c092ecae38604a21dc76a0a2976c5769d..cd8723efef6bbce9785d9942bf152e0d185ccf46 100644 (file)
@@ -1145,7 +1145,6 @@ and :c:type:`PyType_Type` effectively act as defaults.)
    .. XXX Document more flags here?
 
 
-   .. data:: Py_TPFLAGS_FLOAT_SUBCLASS
    .. data:: Py_TPFLAGS_LONG_SUBCLASS
    .. data:: Py_TPFLAGS_LIST_SUBCLASS
    .. data:: Py_TPFLAGS_TUPLE_SUBCLASS
index 51be745e11cfa6fda1d2b492439ddc752d0ffe1c..3b6ca478eaef201047234ae63a30b30ea76eb92d 100644 (file)
@@ -14,8 +14,6 @@ extern "C" {
 PyAPI_DATA(PyTypeObject) PyFloat_Type;
 
 #define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)
-#define PyFloat_Check(op) \
-        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_FLOAT_SUBCLASS)
 #define PyFloat_CheckExact(op) Py_IS_TYPE(op, &PyFloat_Type)
 
 #ifdef Py_NAN
index ee817a545a2b50fa5d9cf180578b3c7963672fea..e5544e8b588ed7ea5cccefc2ef9b4a5ba070bc07 100644 (file)
@@ -397,7 +397,6 @@ given type object has a specified feature.
 #define _Py_TPFLAGS_MATCH_SELF (1UL << 22)
 
 /* These flags are used to determine if a type is a subclass. */
-#define Py_TPFLAGS_FLOAT_SUBCLASS       (1UL << 23)
 #define Py_TPFLAGS_LONG_SUBCLASS        (1UL << 24)
 #define Py_TPFLAGS_LIST_SUBCLASS        (1UL << 25)
 #define Py_TPFLAGS_TUPLE_SUBCLASS       (1UL << 26)
diff --git a/Misc/NEWS.d/next/C API/2021-12-19-13-02-59.bpo-46131.ZBWQtO.rst b/Misc/NEWS.d/next/C API/2021-12-19-13-02-59.bpo-46131.ZBWQtO.rst
deleted file mode 100644 (file)
index 08768ca..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Add a fast path for ``PyFloat_Check`` via a ``Py_TPFLAGS_FLOAT_SUBCLASS``
-flag.
index 37434f32bd995dfce5fd8e6c30e5a2742063a6c4..f8620d6f8ef0b189a0cf06ebe0a05661ddf95fd0 100644 (file)
@@ -1959,7 +1959,6 @@ PyTypeObject PyFloat_Type = {
     0,                                          /* tp_setattro */
     0,                                          /* tp_as_buffer */
     Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
-        Py_TPFLAGS_FLOAT_SUBCLASS |
         _Py_TPFLAGS_MATCH_SELF,               /* tp_flags */
     float_new__doc__,                           /* tp_doc */
     0,                                          /* tp_traverse */
index 8bd92801da4ba3bfafb95ad02fdb0517afc31166..af35180cdb98310b6ca22ec5a38fbdf7e4ae6fd7 100644 (file)
@@ -5783,9 +5783,6 @@ inherit_special(PyTypeObject *type, PyTypeObject *base)
     else if (PyType_IsSubtype(base, &PyDict_Type)) {
         type->tp_flags |= Py_TPFLAGS_DICT_SUBCLASS;
     }
-    else if (PyType_IsSubtype(base, &PyFloat_Type)) {
-        type->tp_flags |= Py_TPFLAGS_FLOAT_SUBCLASS;
-    }
     if (PyType_HasFeature(base, _Py_TPFLAGS_MATCH_SELF)) {
         type->tp_flags |= _Py_TPFLAGS_MATCH_SELF;
     }
index 41d1c3cc6e1bd13169120413a50809cdda4c667a..a0a95e3fc63cba27763433c56ca608d6acb4bf56 100755 (executable)
@@ -85,7 +85,6 @@ _is_pep393 = None
 
 Py_TPFLAGS_MANAGED_DICT      = (1 << 4)
 Py_TPFLAGS_HEAPTYPE          = (1 << 9)
-Py_TPFLAGS_FLOAT_SUBCLASS    = (1 << 23)
 Py_TPFLAGS_LONG_SUBCLASS     = (1 << 24)
 Py_TPFLAGS_LIST_SUBCLASS     = (1 << 25)
 Py_TPFLAGS_TUPLE_SUBCLASS    = (1 << 26)
@@ -380,8 +379,6 @@ class PyObjectPtr(object):
         if tp_flags & Py_TPFLAGS_HEAPTYPE:
             return HeapTypeObjectPtr
 
-        if tp_flags & Py_TPFLAGS_FLOAT_SUBCLASS:
-            return PyFloatObjectPtr
         if tp_flags & Py_TPFLAGS_LONG_SUBCLASS:
             return PyLongObjectPtr
         if tp_flags & Py_TPFLAGS_LIST_SUBCLASS:
@@ -913,16 +910,6 @@ class PyNoneStructPtr(PyObjectPtr):
     def proxyval(self, visited):
         return None
 
-class PyFloatObjectPtr(PyObjectPtr):
-    _typename = 'PyFloatObject'
-
-    def proxyval(self, visited):
-        return self.field('ob_fval')
-
-    def write_repr(self, out, visited):
-        proxy = self.proxyval(visited)
-        out.write("%s" % proxy)
-
 class PyFrameObjectPtr(PyObjectPtr):
     _typename = 'PyFrameObject'