@@ -270,20 +270,14 @@ boolean callBoolean(double left, double right,
270
270
Object callObject (Object left , Object right ,
271
271
@ Cached ("create(name)" ) LookupInheritedAttributeNode getattr ) {
272
272
Object leftCallable = getattr .execute (left );
273
- Object result ;
274
273
if (leftCallable == PNone .NO_VALUE ) {
275
- result = PNotImplemented .NOT_IMPLEMENTED ;
276
- } else {
277
- result = ensureDispatch ().executeObject (leftCallable , left , right );
278
- }
279
- if (handlerFactory != null && result == PNotImplemented .NOT_IMPLEMENTED ) {
280
- if (handler == null ) {
281
- CompilerDirectives .transferToInterpreterAndInvalidate ();
282
- handler = insert (handlerFactory .get ());
274
+ if (handlerFactory != null ) {
275
+ return runErrorHandler (left , right );
276
+ } else {
277
+ return PNotImplemented .NOT_IMPLEMENTED ;
283
278
}
284
- return handler .execute (left , right );
285
279
}
286
- return result ;
280
+ return ensureDispatch (). executeObject ( leftCallable , left , right ) ;
287
281
}
288
282
289
283
@ Specialization (guards = "isReversible()" )
@@ -319,12 +313,16 @@ Object callObject(Object left, Object right,
319
313
result = ensureReverseDispatch ().executeObject (rightCallable , right , left );
320
314
}
321
315
if (handlerFactory != null && result == PNotImplemented .NOT_IMPLEMENTED ) {
322
- if (handler == null ) {
323
- CompilerDirectives .transferToInterpreterAndInvalidate ();
324
- handler = insert (handlerFactory .get ());
325
- }
326
- return handler .execute (left , right );
316
+ return runErrorHandler (left , right );
327
317
}
328
318
return result ;
329
319
}
320
+
321
+ private Object runErrorHandler (Object left , Object right ) {
322
+ if (handler == null ) {
323
+ CompilerDirectives .transferToInterpreterAndInvalidate ();
324
+ handler = insert (handlerFactory .get ());
325
+ }
326
+ return handler .execute (left , right );
327
+ }
330
328
}
0 commit comments