@@ -677,26 +677,9 @@ typedef struct lru_list_elem {
677
677
static void
678
678
lru_list_elem_dealloc (lru_list_elem * link )
679
679
{
680
- _PyObject_GC_UNTRACK (link );
681
680
Py_XDECREF (link -> key );
682
681
Py_XDECREF (link -> result );
683
- PyObject_GC_Del (link );
684
- }
685
-
686
- static int
687
- lru_list_elem_traverse (lru_list_elem * link , visitproc visit , void * arg )
688
- {
689
- Py_VISIT (link -> key );
690
- Py_VISIT (link -> result );
691
- return 0 ;
692
- }
693
-
694
- static int
695
- lru_list_elem_clear (lru_list_elem * link )
696
- {
697
- Py_CLEAR (link -> key );
698
- Py_CLEAR (link -> result );
699
- return 0 ;
682
+ PyObject_Del (link );
700
683
}
701
684
702
685
static PyTypeObject lru_list_elem_type = {
@@ -720,10 +703,7 @@ static PyTypeObject lru_list_elem_type = {
720
703
0 , /* tp_getattro */
721
704
0 , /* tp_setattro */
722
705
0 , /* tp_as_buffer */
723
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC , /* tp_flags */
724
- 0 , /* tp_doc */
725
- (traverseproc )lru_list_elem_traverse , /* tp_traverse */
726
- (inquiry )lru_list_elem_clear , /* tp_clear */
706
+ Py_TPFLAGS_DEFAULT , /* tp_flags */
727
707
};
728
708
729
709
@@ -959,8 +939,8 @@ bounded_lru_cache_wrapper(lru_cache_object *self, PyObject *args, PyObject *kwds
959
939
}
960
940
} else {
961
941
/* Put result in a new link at the front of the queue. */
962
- link = (lru_list_elem * )PyObject_GC_New (lru_list_elem ,
963
- & lru_list_elem_type );
942
+ link = (lru_list_elem * )PyObject_New (lru_list_elem ,
943
+ & lru_list_elem_type );
964
944
if (link == NULL ) {
965
945
Py_DECREF (key );
966
946
Py_DECREF (result );
@@ -970,7 +950,6 @@ bounded_lru_cache_wrapper(lru_cache_object *self, PyObject *args, PyObject *kwds
970
950
link -> hash = hash ;
971
951
link -> key = key ;
972
952
link -> result = result ;
973
- _PyObject_GC_TRACK (link );
974
953
if (_PyDict_SetItem_KnownHash (self -> cache , key , (PyObject * )link ,
975
954
hash ) < 0 ) {
976
955
Py_DECREF (link );
@@ -1151,7 +1130,8 @@ lru_cache_tp_traverse(lru_cache_object *self, visitproc visit, void *arg)
1151
1130
lru_list_elem * link = self -> root .next ;
1152
1131
while (link != & self -> root ) {
1153
1132
lru_list_elem * next = link -> next ;
1154
- Py_VISIT (link );
1133
+ Py_VISIT (link -> key );
1134
+ Py_VISIT (link -> result );
1155
1135
link = next ;
1156
1136
}
1157
1137
Py_VISIT (self -> maxsize_O );
0 commit comments