@@ -120,7 +120,7 @@ static Object getFixedAttr(VirtualFrame frame, Object receiver, @SuppressWarning
120
120
@ Cached BranchProfile returnBoundDescr ) {
121
121
boolean methodFound = false ;
122
122
Object descr = lookupNode .execute (lazyClass );
123
- Object getMethod = null ;
123
+ Object getMethod = PNone . NO_VALUE ;
124
124
if (descr != PNone .NO_VALUE ) {
125
125
hasDescr .enter ();
126
126
if (MaybeBindDescriptorNode .isMethodDescriptor (descr )) {
@@ -147,11 +147,14 @@ static Object getFixedAttr(VirtualFrame frame, Object receiver, @SuppressWarning
147
147
returnUnboundMethod .enter ();
148
148
return descr ;
149
149
}
150
- if (getMethod != null ) {
150
+ if (getMethod != PNone . NO_VALUE ) {
151
151
// callGet is used twice, and cannot act as the profile here
152
152
returnBoundDescr .enter ();
153
153
return new BoundDescriptor (callGet .execute (frame , getMethod , descr , receiver , lazyClass ));
154
154
}
155
+ if (descr != PNone .NO_VALUE ) {
156
+ return new BoundDescriptor (descr );
157
+ }
155
158
throw raiseNode .raise (AttributeError , ErrorMessages .OBJ_P_HAS_NO_ATTR_S , receiver , name );
156
159
}
157
160
@@ -169,7 +172,7 @@ static Object getDynamicAttr(Frame frame, Object receiver, String name,
169
172
@ Shared ("raiseNode" ) @ Cached PRaiseNode raiseNode ) {
170
173
boolean methodFound = false ;
171
174
Object descr = lookupNode .execute (lazyClass , name );
172
- Object getMethod = null ;
175
+ Object getMethod = PNone . NO_VALUE ;
173
176
if (descr != PNone .NO_VALUE ) {
174
177
if (MaybeBindDescriptorNode .isMethodDescriptor (descr )) {
175
178
methodFound = true ;
@@ -190,9 +193,12 @@ static Object getDynamicAttr(Frame frame, Object receiver, String name,
190
193
if (methodFound ) {
191
194
return descr ;
192
195
}
193
- if (getMethod != null ) {
196
+ if (getMethod != PNone . NO_VALUE ) {
194
197
return new BoundDescriptor (callGet .execute (frame , getMethod , descr , receiver , lazyClass ));
195
198
}
199
+ if (descr != PNone .NO_VALUE ) {
200
+ return new BoundDescriptor (descr );
201
+ }
196
202
throw raiseNode .raise (AttributeError , ErrorMessages .OBJ_P_HAS_NO_ATTR_S , receiver , name );
197
203
}
198
204
}
0 commit comments