@@ -2506,12 +2506,7 @@ public String doString(VirtualFrame frame, Object self, PSlice slice,
2506
2506
@ Cached CoerceToIntSlice sliceCast ,
2507
2507
@ Cached ComputeIndices compute ,
2508
2508
@ Cached StrGetItemNodeWithSlice getItemNodeWithSlice ) {
2509
- String str ;
2510
- try {
2511
- str = castToJavaString .execute (self );
2512
- } catch (CannotCastException e ) {
2513
- throw raise (TypeError , ErrorMessages .DESCRIPTOR_REQUIRES_OBJ , __GETITEM__ , "str" , self );
2514
- }
2509
+ String str = castToString (self , castToJavaString );
2515
2510
SliceInfo info = compute .execute (frame , sliceCast .execute (slice ), str .length ());
2516
2511
return getItemNodeWithSlice .execute (str , info );
2517
2512
}
@@ -2520,12 +2515,7 @@ public String doString(VirtualFrame frame, Object self, PSlice slice,
2520
2515
public String doString (VirtualFrame frame , Object self , Object idx ,
2521
2516
@ Cached CastToJavaStringNode castToJavaString ,
2522
2517
@ Cached PyNumberAsSizeNode asSizeNode ) {
2523
- String str ;
2524
- try {
2525
- str = castToJavaString .execute (self );
2526
- } catch (CannotCastException e ) {
2527
- throw raise (TypeError , ErrorMessages .DESCRIPTOR_REQUIRES_OBJ , __GETITEM__ , "str" , self );
2528
- }
2518
+ String str = castToString (self , castToJavaString );
2529
2519
int index = asSizeNode .executeExact (frame , idx );
2530
2520
if (index < 0 ) {
2531
2521
index += str .length ();
@@ -2541,6 +2531,14 @@ private static String charAtToString(String primary, int index) {
2541
2531
char character = primary .charAt (index );
2542
2532
return String .valueOf (character );
2543
2533
}
2534
+
2535
+ private String castToString (Object self , CastToJavaStringNode castToJavaString ) {
2536
+ try {
2537
+ return castToJavaString .execute (self );
2538
+ } catch (CannotCastException e ) {
2539
+ throw raise (TypeError , ErrorMessages .DESCRIPTOR_REQUIRES_OBJ , __GETITEM__ , "str" , self );
2540
+ }
2541
+ }
2544
2542
}
2545
2543
2546
2544
@ Builtin (name = __ITER__ , minNumOfPositionalArgs = 1 )
0 commit comments