@@ -64,11 +64,18 @@ public static NewReference tp_descr_get(BorrowedReference ds, BorrowedReference
6464 // Fasterflect does not support constant fields
6565 if ( info . IsLiteral && ! info . IsInitOnly )
6666 {
67- result = info . GetValue ( null ) ;
67+ using ( Py . AllowThreads ( ) )
68+ {
69+ result = info . GetValue ( null ) ;
70+ }
6871 }
6972 else
7073 {
71- result = self . GetMemberGetter ( info . DeclaringType ) ( info . DeclaringType ) ;
74+ var getter = self . GetMemberGetter ( info . DeclaringType ) ;
75+ using ( Py . AllowThreads ( ) )
76+ {
77+ result = getter ( info . DeclaringType ) ;
78+ }
7279 }
7380
7481 return Converter . ToPython ( result , info . FieldType ) ;
@@ -92,12 +99,20 @@ public static NewReference tp_descr_get(BorrowedReference ds, BorrowedReference
9299 // Fasterflect does not support constant fields
93100 if ( info . IsLiteral && ! info . IsInitOnly )
94101 {
95- result = info . GetValue ( co . inst ) ;
102+ using ( Py . AllowThreads ( ) )
103+ {
104+ result = info . GetValue ( co . inst ) ;
105+ }
96106 }
97107 else
98108 {
99109 var type = co . inst . GetType ( ) ;
100- result = self . GetMemberGetter ( type ) ( self . IsValueType ( type ) ? co . inst . WrapIfValueType ( ) : co . inst ) ;
110+ var getter = self . GetMemberGetter ( type ) ;
111+ var argument = self . IsValueType ( type ) ? co . inst . WrapIfValueType ( ) : co . inst ;
112+ using ( Py . AllowThreads ( ) )
113+ {
114+ result = getter ( argument ) ;
115+ }
101116 }
102117
103118 return Converter . ToPython ( result , info . FieldType ) ;
0 commit comments