Skip to content

Commit e85366e

Browse files
Arnav Aghavmeta-codesync[bot]
authored andcommitted
Revert D91931393: Don't take address of PyType_Type for initing base classes
Differential Revision: D91931393 Original commit changeset: e817440e1602 Original Phabricator Diff: D91931393 fbshipit-source-id: d175ebbe31901b95f5916109da042688d7ed5497
1 parent c61b60d commit e85366e

17 files changed

Lines changed: 43 additions & 67 deletions

cinderx/CachedProperties/cached_properties.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ static PyMethodDef cached_property_methods[] = {
524524
{NULL, NULL}};
525525

526526
PyTypeObject PyCachedProperty_Type = {
527-
PyVarObject_HEAD_INIT(NULL, 0).tp_name = "cached_property",
527+
PyVarObject_HEAD_INIT(&PyType_Type, 0).tp_name = "cached_property",
528528
.tp_basicsize = sizeof(PyCachedPropertyDescrObject),
529529
.tp_dealloc = (destructor)cached_property_dealloc,
530530
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
@@ -541,7 +541,8 @@ PyTypeObject PyCachedProperty_Type = {
541541
};
542542

543543
PyTypeObject PyCachedPropertyWithDescr_Type = {
544-
PyVarObject_HEAD_INIT(NULL, 0).tp_name = "cached_property_with_descr",
544+
PyVarObject_HEAD_INIT(&PyType_Type, 0).tp_name =
545+
"cached_property_with_descr",
545546
.tp_base = &PyCachedProperty_Type,
546547
.tp_basicsize = sizeof(PyCachedPropertyDescrObject),
547548
.tp_dealloc = (destructor)cached_property_dealloc,
@@ -917,7 +918,7 @@ static PyObject* async_cached_classproperty_new(
917918
/* end clinic-generated code */
918919

919920
PyTypeObject PyAsyncCachedProperty_Type = {
920-
PyVarObject_HEAD_INIT(NULL, 0).tp_name = "async_cached_property",
921+
PyVarObject_HEAD_INIT(&PyType_Type, 0).tp_name = "async_cached_property",
921922
.tp_basicsize = sizeof(PyAsyncCachedPropertyDescrObject),
922923
.tp_dealloc = (destructor)async_cached_property_dealloc,
923924
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
@@ -933,7 +934,8 @@ PyTypeObject PyAsyncCachedProperty_Type = {
933934
};
934935

935936
PyTypeObject PyAsyncCachedPropertyWithDescr_Type = {
936-
PyVarObject_HEAD_INIT(NULL, 0).tp_name = "async_cached_property_with_descr",
937+
PyVarObject_HEAD_INIT(&PyType_Type, 0).tp_name =
938+
"async_cached_property_with_descr",
937939
.tp_basicsize = sizeof(PyAsyncCachedPropertyDescrObject),
938940
.tp_dealloc = (destructor)async_cached_property_dealloc,
939941
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
@@ -1051,7 +1053,8 @@ static PyMemberDef async_cached_classproperty_members[] = {
10511053
{0}};
10521054

10531055
PyTypeObject PyAsyncCachedClassProperty_Type = {
1054-
PyVarObject_HEAD_INIT(NULL, 0).tp_name = "async_cached_classproperty",
1056+
PyVarObject_HEAD_INIT(&PyType_Type, 0).tp_name =
1057+
"async_cached_classproperty",
10551058
.tp_basicsize = sizeof(PyAsyncCachedClassPropertyDescrObject),
10561059
.tp_dealloc = (destructor)async_cached_classproperty_dealloc,
10571060
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,

cinderx/Jit/generators_rt.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ static PyAsyncMethods* jitcorowrapper_async_methods = nullptr;
414414

415415
#endif
416416
PyTypeObject _JitCoroWrapper_Type = {
417-
PyVarObject_HEAD_INIT(NULL, 0) "coroutine_wrapper",
417+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "coroutine_wrapper",
418418
sizeof(JitCoroWrapper), /* tp_basicsize */
419419
0, /* tp_itemsize */
420420
reinterpret_cast<destructor>(

cinderx/Jit/inline_cache.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ constexpr uintptr_t kKindMask = 0x07;
6767
#pragma clang diagnostic push
6868
#pragma clang diagnostic ignored "-Wmissing-field-initializers"
6969
PyTypeObject s_empty_type_attr_cache = {
70-
PyVarObject_HEAD_INIT(NULL, 0) "EmptyLoadTypeAttrCache",
70+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "EmptyLoadTypeAttrCache",
7171
};
7272
#pragma clang diagnostic pop
7373

cinderx/StaticPython/_static.c

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,6 @@ typedef struct {
3939
static int _static_exec(PyObject* m) {
4040
StaticModuleState* mod_state = (StaticModuleState*)PyModule_GetState(m);
4141

42-
Ci_CheckedDict_GenericType.gtd_type.ht_type.ob_base.ob_base.ob_type =
43-
&PyType_Type;
44-
Ci_CheckedList_GenericType.gtd_type.ht_type.ob_base.ob_base.ob_type =
45-
&PyType_Type;
4642
if ((Ci_CheckedDict_Type = _PyClassLoader_MakeGenericHeapType(
4743
&Ci_CheckedDict_GenericType)) == NULL ||
4844
PyModule_AddObjectRef(m, "chkdict", (PyObject*)Ci_CheckedDict_Type) < 0) {
@@ -64,24 +60,6 @@ static int _static_exec(PyObject* m) {
6460
return -1;
6561
}
6662

67-
if (PyType_Ready(&Ci_CheckedListRevIter_Type) < 0 ||
68-
PyType_Ready(&Ci_CheckedListIter_Type) < 0 ||
69-
PyType_Ready(&Ci_CheckedDictItems_Type) < 0 ||
70-
PyType_Ready(&Ci_CheckedDictValues_Type) < 0 ||
71-
PyType_Ready(&Ci_CheckedDictIterKey_Type) < 0 ||
72-
PyType_Ready(&Ci_CheckedDictIterValue_Type) < 0 ||
73-
PyType_Ready(&Ci_CheckedDictIterItem_Type) < 0 ||
74-
PyType_Ready(&Ci_CheckedDictRevIterKey_Type) < 0 ||
75-
PyType_Ready(&Ci_CheckedDictRevIterItem_Type) < 0 ||
76-
PyType_Ready(&Ci_CheckedDictRevIterValue_Type) < 0 ||
77-
PyType_Ready(&Ci_CheckedDictKeys_Type) < 0 ||
78-
PyType_Ready(&_PyType_MethodThunk) < 0 ||
79-
PyType_Ready(&_PyType_StaticThunk) < 0 ||
80-
PyType_Ready(&_PyType_PropertyThunk) < 0 ||
81-
PyType_Ready(&_PyClassLoader_VTableInitThunk_Type)) {
82-
return -1;
83-
}
84-
8563
mod_state->chk_dict = Ci_CheckedDict_Type;
8664
mod_state->chk_list = Ci_CheckedList_Type;
8765
mod_state->static_array = PyStaticArray_Type;
@@ -688,7 +666,7 @@ static void ctxmgrwrp_dealloc(_Py_ContextManagerWrapper* self) {
688666
}
689667

690668
PyTypeObject _PyContextDecoratorWrapper_Type = {
691-
PyVarObject_HEAD_INIT(NULL, 0) "context_decorator_wrapper",
669+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "context_decorator_wrapper",
692670
sizeof(_Py_ContextManagerWrapper),
693671
.tp_base = &_PyWeakref_RefType,
694672
.tp_dealloc = (destructor)ctxmgrwrp_dealloc,

cinderx/StaticPython/awaitable.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ static PyMemberDef awaitable_memberlist[] = {
239239
};
240240

241241
static PyTypeObject _PyClassLoader_AwaitableType = {
242-
PyVarObject_HEAD_INIT(NULL, 0).tp_name = "awaitable_wrapper",
242+
PyVarObject_HEAD_INIT(&PyType_Type, 0).tp_name = "awaitable_wrapper",
243243
sizeof(_PyClassLoader_Awaitable),
244244
0,
245245
.tp_dealloc = (destructor)awaitable_dealloc,

cinderx/StaticPython/checked_dict.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2991,7 +2991,9 @@ _PyGenericTypeDef Ci_CheckedDict_GenericType = {
29912991
.gtd_type =
29922992
{.ht_type =
29932993
{
2994-
PyVarObject_HEAD_INIT(NULL, 0) "__static__.chkdict[K, V]",
2994+
PyVarObject_HEAD_INIT(
2995+
&PyType_Type,
2996+
0) "__static__.chkdict[K, V]",
29952997
sizeof(CiChkDictObject),
29962998
0,
29972999
(destructor)dict_dealloc, /* tp_dealloc */
@@ -3186,7 +3188,7 @@ static PyObject* dictiter_iternextkey(dictiterobject* di) {
31863188
}
31873189

31883190
PyTypeObject Ci_CheckedDictIterKey_Type = {
3189-
PyVarObject_HEAD_INIT(NULL, 0) "dict_keyiterator", /* tp_name */
3191+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict_keyiterator", /* tp_name */
31903192
sizeof(dictiterobject), /* tp_basicsize */
31913193
0, /* tp_itemsize */
31923194
/* methods */
@@ -3279,7 +3281,7 @@ static PyObject* dictiter_iternextvalue(dictiterobject* di) {
32793281
}
32803282

32813283
PyTypeObject Ci_CheckedDictIterValue_Type = {
3282-
PyVarObject_HEAD_INIT(NULL, 0) "dict_valueiterator", /* tp_name */
3284+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict_valueiterator", /* tp_name */
32833285
sizeof(dictiterobject), /* tp_basicsize */
32843286
0, /* tp_itemsize */
32853287
/* methods */
@@ -3397,7 +3399,7 @@ static PyObject* dictiter_iternextitem(dictiterobject* di) {
33973399
}
33983400

33993401
PyTypeObject Ci_CheckedDictIterItem_Type = {
3400-
PyVarObject_HEAD_INIT(NULL, 0) "dict_itemiterator", /* tp_name */
3402+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict_itemiterator", /* tp_name */
34013403
sizeof(dictiterobject), /* tp_basicsize */
34023404
0, /* tp_itemsize */
34033405
/* methods */
@@ -3520,7 +3522,7 @@ static PyObject* dictreviter_iternext(dictiterobject* di) {
35203522
}
35213523

35223524
PyTypeObject Ci_CheckedDictRevIterKey_Type = {
3523-
PyVarObject_HEAD_INIT(NULL, 0) "dict_reversekeyiterator",
3525+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict_reversekeyiterator",
35243526
sizeof(dictiterobject),
35253527
.tp_dealloc = (destructor)dictiter_dealloc,
35263528
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
@@ -3551,7 +3553,7 @@ static PyObject* dictiter_reduce(
35513553
}
35523554

35533555
PyTypeObject Ci_CheckedDictRevIterItem_Type = {
3554-
PyVarObject_HEAD_INIT(NULL, 0) "dict_reverseitemiterator",
3556+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict_reverseitemiterator",
35553557
sizeof(dictiterobject),
35563558
.tp_dealloc = (destructor)dictiter_dealloc,
35573559
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
@@ -3561,7 +3563,7 @@ PyTypeObject Ci_CheckedDictRevIterItem_Type = {
35613563
.tp_methods = dictiter_methods};
35623564

35633565
PyTypeObject Ci_CheckedDictRevIterValue_Type = {
3564-
PyVarObject_HEAD_INIT(NULL, 0) "dict_reversevalueiterator",
3566+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict_reversevalueiterator",
35653567
sizeof(dictiterobject),
35663568
.tp_dealloc = (destructor)dictiter_dealloc,
35673569
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
@@ -4113,7 +4115,7 @@ static PyMethodDef dictkeys_methods[] = {
41134115
};
41144116

41154117
PyTypeObject Ci_CheckedDictKeys_Type = {
4116-
PyVarObject_HEAD_INIT(NULL, 0) "dict_keys", /* tp_name */
4118+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict_keys", /* tp_name */
41174119
sizeof(_CiDictViewObject), /* tp_basicsize */
41184120
0, /* tp_itemsize */
41194121
/* methods */
@@ -4219,7 +4221,7 @@ static PyMethodDef dictitems_methods[] = {
42194221
};
42204222

42214223
PyTypeObject Ci_CheckedDictItems_Type = {
4222-
PyVarObject_HEAD_INIT(NULL, 0) "dict_items", /* tp_name */
4224+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict_items", /* tp_name */
42234225
sizeof(_CiDictViewObject), /* tp_basicsize */
42244226
0, /* tp_itemsize */
42254227
/* methods */
@@ -4300,7 +4302,7 @@ static PyMethodDef dictvalues_methods[] = {
43004302
};
43014303

43024304
PyTypeObject Ci_CheckedDictValues_Type = {
4303-
PyVarObject_HEAD_INIT(NULL, 0) "dict_values", /* tp_name */
4305+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict_values", /* tp_name */
43044306
sizeof(_CiDictViewObject), /* tp_basicsize */
43054307
0, /* tp_itemsize */
43064308
/* methods */

cinderx/StaticPython/checked_dict.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,6 @@ int Ci_DictOrChecked_SetItem(PyObject* op, PyObject* key, PyObject* value);
2525

2626
void _PyCheckedDict_ClearCaches();
2727

28-
extern PyTypeObject Ci_CheckedDictItems_Type, Ci_CheckedDictValues_Type,
29-
Ci_CheckedDictIterKey_Type, Ci_CheckedDictIterValue_Type,
30-
Ci_CheckedDictIterItem_Type, Ci_CheckedDictRevIterKey_Type,
31-
Ci_CheckedDictRevIterItem_Type, Ci_CheckedDictRevIterValue_Type,
32-
Ci_CheckedDictKeys_Type, Ci_CheckedDictItems_Type,
33-
Ci_CheckedDictValues_Type;
3428
#ifdef __cplusplus
3529
}
3630
#endif

cinderx/StaticPython/checked_list.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2694,7 +2694,7 @@ static PyMethodDef listiter_methods[] = {
26942694
};
26952695

26962696
PyTypeObject Ci_CheckedListIter_Type = {
2697-
PyVarObject_HEAD_INIT(NULL, 0) "list_iterator", /* tp_name */
2697+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "list_iterator", /* tp_name */
26982698
sizeof(listiterobject), /* tp_basicsize */
26992699
0, /* tp_itemsize */
27002700
/* methods */
@@ -2838,7 +2838,7 @@ static PyMethodDef listreviter_methods[] = {
28382838
};
28392839

28402840
PyTypeObject Ci_CheckedListRevIter_Type = {
2841-
PyVarObject_HEAD_INIT(NULL, 0) "list_reverseiterator", /* tp_name */
2841+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "list_reverseiterator", /* tp_name */
28422842
sizeof(listreviterobject), /* tp_basicsize */
28432843
0, /* tp_itemsize */
28442844
/* methods */
@@ -3778,7 +3778,7 @@ _PyGenericTypeDef Ci_CheckedList_GenericType = {
37783778
.gtd_type =
37793779
{.ht_type =
37803780
{
3781-
PyVarObject_HEAD_INIT(NULL, 0) "__static__.chklist[T]",
3781+
PyVarObject_HEAD_INIT(&PyType_Type, 0) "__static__.chklist[T]",
37823782
sizeof(PyListObject),
37833783
0,
37843784
(destructor)chklist_dealloc, /* tp_dealloc */

cinderx/StaticPython/checked_list.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ void _PyCheckedList_ClearCaches();
3434
((void)(((PyListObject*)(op))->ob_item[i] = (v)))
3535
#define Ci_ListOrCheckedList_GET_SIZE(op) Py_SIZE((PyListObject*)(op))
3636

37-
extern PyTypeObject Ci_CheckedListRevIter_Type;
38-
extern PyTypeObject Ci_CheckedListIter_Type;
3937
#ifdef __cplusplus
4038
}
4139
#endif

cinderx/StaticPython/descrs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ typed_descriptor_set(PyObject* self, PyObject* obj, PyObject* value) {
9494
}
9595

9696
PyTypeObject _PyTypedDescriptor_Type = {
97-
PyVarObject_HEAD_INIT(NULL, 0).tp_name = "typed_descriptor",
97+
PyVarObject_HEAD_INIT(&PyType_Type, 0).tp_name = "typed_descriptor",
9898
.tp_basicsize = sizeof(_PyTypedDescriptor),
9999
.tp_dealloc = (destructor)typed_descriptor_dealloc,
100100
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
@@ -234,7 +234,7 @@ static int typed_descriptor_with_default_value_set(
234234
}
235235

236236
PyTypeObject _PyTypedDescriptorWithDefaultValue_Type = {
237-
PyVarObject_HEAD_INIT(NULL, 0).tp_name =
237+
PyVarObject_HEAD_INIT(&PyType_Type, 0).tp_name =
238238
"typed_descriptor_with_default_value",
239239
.tp_basicsize = sizeof(_PyTypedDescriptorWithDefaultValue),
240240
.tp_dealloc = (destructor)typed_descriptor_with_default_value_dealloc,

0 commit comments

Comments
 (0)