@@ -310,16 +310,20 @@ static String doGeneric(VirtualFrame frame, String string, Object iterable,
310
310
@ Cached IsBuiltinClassProfile errorProfile1 ,
311
311
@ Cached IsBuiltinClassProfile errorProfile2 ,
312
312
@ Cached CastToJavaStringNode castStrNode ) {
313
-
313
+ Object iterator ;
314
+ try {
315
+ iterator = lib .getIteratorWithFrame (iterable , frame );
316
+ } catch (PException e ) {
317
+ e .expect (PythonBuiltinClassType .TypeError , errorProfile0 );
318
+ throw raise .raise (PythonBuiltinClassType .TypeError , ErrorMessages .CAN_ONLY_JOIN_ITERABLE );
319
+ }
314
320
try {
315
- Object iterator = lib .getIteratorWithFrame (iterable , frame );
316
321
StringBuilder str = new StringBuilder ();
317
322
try {
318
323
append (str , checkItem (nextNode .execute (frame , iterator ), 0 , castStrNode , raise ));
319
324
} catch (PException e ) {
320
325
e .expectStopIteration (errorProfile1 );
321
326
return "" ;
322
-
323
327
}
324
328
int i = 1 ;
325
329
while (true ) {
@@ -333,9 +337,6 @@ static String doGeneric(VirtualFrame frame, String string, Object iterable,
333
337
append (str , string );
334
338
append (str , checkItem (value , i ++, castStrNode , raise ));
335
339
}
336
- } catch (PException e ) {
337
- e .expect (PythonBuiltinClassType .TypeError , errorProfile0 );
338
- throw raise .raise (PythonBuiltinClassType .TypeError , ErrorMessages .CAN_ONLY_JOIN_ITERABLE );
339
340
} catch (OutOfMemoryError e ) {
340
341
throw raise .raise (MemoryError );
341
342
}
0 commit comments