@@ -120,7 +120,7 @@ static Object getFixedAttr(VirtualFrame frame, Object receiver, @SuppressWarning
120120 @ Cached BranchProfile returnBoundDescr ) {
121121 boolean methodFound = false ;
122122 Object descr = lookupNode .execute (lazyClass );
123- Object getMethod = null ;
123+ Object getMethod = PNone . NO_VALUE ;
124124 if (descr != PNone .NO_VALUE ) {
125125 hasDescr .enter ();
126126 if (MaybeBindDescriptorNode .isMethodDescriptor (descr )) {
@@ -147,11 +147,14 @@ static Object getFixedAttr(VirtualFrame frame, Object receiver, @SuppressWarning
147147 returnUnboundMethod .enter ();
148148 return descr ;
149149 }
150- if (getMethod != null ) {
150+ if (getMethod != PNone . NO_VALUE ) {
151151 // callGet is used twice, and cannot act as the profile here
152152 returnBoundDescr .enter ();
153153 return new BoundDescriptor (callGet .execute (frame , getMethod , descr , receiver , lazyClass ));
154154 }
155+ if (descr != PNone .NO_VALUE ) {
156+ return new BoundDescriptor (descr );
157+ }
155158 throw raiseNode .raise (AttributeError , ErrorMessages .OBJ_P_HAS_NO_ATTR_S , receiver , name );
156159 }
157160
@@ -169,7 +172,7 @@ static Object getDynamicAttr(Frame frame, Object receiver, String name,
169172 @ Shared ("raiseNode" ) @ Cached PRaiseNode raiseNode ) {
170173 boolean methodFound = false ;
171174 Object descr = lookupNode .execute (lazyClass , name );
172- Object getMethod = null ;
175+ Object getMethod = PNone . NO_VALUE ;
173176 if (descr != PNone .NO_VALUE ) {
174177 if (MaybeBindDescriptorNode .isMethodDescriptor (descr )) {
175178 methodFound = true ;
@@ -190,9 +193,12 @@ static Object getDynamicAttr(Frame frame, Object receiver, String name,
190193 if (methodFound ) {
191194 return descr ;
192195 }
193- if (getMethod != null ) {
196+ if (getMethod != PNone . NO_VALUE ) {
194197 return new BoundDescriptor (callGet .execute (frame , getMethod , descr , receiver , lazyClass ));
195198 }
199+ if (descr != PNone .NO_VALUE ) {
200+ return new BoundDescriptor (descr );
201+ }
196202 throw raiseNode .raise (AttributeError , ErrorMessages .OBJ_P_HAS_NO_ATTR_S , receiver , name );
197203 }
198204}
0 commit comments