@@ -624,10 +624,10 @@ private static List<Stmt> patchStringConcatInstruction(Stmt callSite, DynamicInv
624624
625625 RefType rtStringBuilder = RefType .v ("java.lang.StringBuilder" );
626626 SootClass scStringBuilder = rtStringBuilder .getSootClass ();
627- SootMethodRef appendObjectRef = scStringBuilder . getMethod ( "java.lang.StringBuilder append(java.lang.Object)" )
628- . makeRef ( );
629- SootMethodRef toStringRef = scene .getObjectType ().getSootClass (). getMethod ( "java.lang.String toString()" )
630- . makeRef ( );
627+ SootMethodRef appendObjectRef = scene . makeMethodRef ( scStringBuilder ,
628+ "java.lang.StringBuilder append(java.lang.Object)" , false );
629+ SootMethodRef toStringRef = scene .makeMethodRef ( scene . getObjectType ().getSootClass (),
630+ "java.lang.String toString()" , false );
631631
632632 SootClass scArrays = Scene .v ().getSootClass ("java.util.Arrays" );
633633
@@ -643,7 +643,7 @@ private static List<Stmt> patchStringConcatInstruction(Stmt callSite, DynamicInv
643643 newStmts .add (stmt );
644644
645645 stmt = jimple .newInvokeStmt (jimple .newSpecialInvokeExpr (sb ,
646- scStringBuilder . getMethod ( "void <init>(java.lang.String)" ). makeRef ( )));
646+ scene . makeMethodRef ( scStringBuilder , "void <init>(java.lang.String)" , false )));
647647 stmt .addTag (SimulatedCodeElementTag .TAG );
648648 newStmts .add (stmt );
649649
@@ -656,21 +656,21 @@ private static List<Stmt> patchStringConcatInstruction(Stmt callSite, DynamicInv
656656 if (argType instanceof RefType )
657657 appendRef = appendObjectRef ;
658658 else if (argType instanceof ByteType )
659- appendRef = scStringBuilder . getMethod ( "java.lang.StringBuilder append(byte)" ). makeRef ( );
659+ appendRef = scene . makeMethodRef ( scStringBuilder , "java.lang.StringBuilder append(byte)" , false );
660660 else if (argType instanceof BooleanType )
661- appendRef = scStringBuilder . getMethod ( "java.lang.StringBuilder append(boolean)" ). makeRef ( );
661+ appendRef = scene . makeMethodRef ( scStringBuilder , "java.lang.StringBuilder append(boolean)" , false );
662662 else if (argType instanceof CharType )
663- appendRef = scStringBuilder . getMethod ( "java.lang.StringBuilder append(char)" ). makeRef ( );
663+ appendRef = scene . makeMethodRef ( scStringBuilder , "java.lang.StringBuilder append(char)" , false );
664664 else if (argType instanceof ShortType )
665- appendRef = scStringBuilder . getMethod ( "java.lang.StringBuilder append(short)" ). makeRef ( );
665+ appendRef = scene . makeMethodRef ( scStringBuilder , "java.lang.StringBuilder append(short)" , false );
666666 else if (argType instanceof IntType )
667- appendRef = scStringBuilder . getMethod ( "java.lang.StringBuilder append(int)" ). makeRef ( );
667+ appendRef = scene . makeMethodRef ( scStringBuilder , "java.lang.StringBuilder append(int)" , false );
668668 else if (argType instanceof LongType )
669- appendRef = scStringBuilder . getMethod ( "java.lang.StringBuilder append(long)" ). makeRef ( );
669+ appendRef = scene . makeMethodRef ( scStringBuilder , "java.lang.StringBuilder append(long)" , false );
670670 else if (argType instanceof FloatType )
671- appendRef = scStringBuilder . getMethod ( "java.lang.StringBuilder append(float)" ). makeRef ( );
671+ appendRef = scene . makeMethodRef ( scStringBuilder , "java.lang.StringBuilder append(float)" , false );
672672 else if (argType instanceof DoubleType )
673- appendRef = scStringBuilder . getMethod ( "java.lang.StringBuilder append(double)" ). makeRef ( );
673+ appendRef = scene . makeMethodRef ( scStringBuilder , "java.lang.StringBuilder append(double)" , false );
674674 else if (argType instanceof ArrayType ) {
675675 // For an array argument, we need to Arrays.toString() first
676676 ArrayType at = (ArrayType ) argType ;
@@ -679,24 +679,25 @@ else if (argType instanceof ArrayType) {
679679 Local sarg = lg .generateLocal (RefType .v ("java.lang.String" ));
680680 SootMethodRef elementToStringRef = null ;
681681 if (elementType instanceof RefType )
682- elementToStringRef = scArrays . getMethod ( "java.lang.String toString(java.lang.Object[])" )
683- . makeRef ( );
682+ elementToStringRef = scene . makeMethodRef ( scArrays ,
683+ "java.lang.String toString(java.lang.Object[])" , true );
684684 else if (elementType instanceof ByteType )
685- elementToStringRef = scArrays . getMethod ( "java.lang.String toString(byte[])" ). makeRef ( );
685+ elementToStringRef = scene . makeMethodRef ( scArrays , "java.lang.String toString(byte[])" , true );
686686 else if (elementType instanceof BooleanType )
687- elementToStringRef = scArrays .getMethod ("java.lang.String toString(boolean[])" ).makeRef ();
687+ elementToStringRef = scene .makeMethodRef (scArrays , "java.lang.String toString(boolean[])" ,
688+ true );
688689 else if (elementType instanceof CharType )
689- elementToStringRef = scArrays . getMethod ( "java.lang.String toString(char[])" ). makeRef ( );
690+ elementToStringRef = scene . makeMethodRef ( scArrays , "java.lang.String toString(char[])" , true );
690691 else if (elementType instanceof ShortType )
691- elementToStringRef = scArrays . getMethod ( "java.lang.String toString(short[])" ). makeRef ( );
692+ elementToStringRef = scene . makeMethodRef ( scArrays , "java.lang.String toString(short[])" , true );
692693 else if (elementType instanceof IntType )
693- elementToStringRef = scArrays . getMethod ( "java.lang.String toString(int[])" ). makeRef ( );
694+ elementToStringRef = scene . makeMethodRef ( scArrays , "java.lang.String toString(int[])" , true );
694695 else if (elementType instanceof LongType )
695- elementToStringRef = scArrays . getMethod ( "java.lang.String toString(long[])" ). makeRef ( );
696+ elementToStringRef = scene . makeMethodRef ( scArrays , "java.lang.String toString(long[])" , true );
696697 else if (elementType instanceof FloatType )
697- elementToStringRef = scArrays . getMethod ( "java.lang.String toString(float[])" ). makeRef ( );
698+ elementToStringRef = scene . makeMethodRef ( scArrays , "java.lang.String toString(float[])" , true );
698699 else if (elementType instanceof DoubleType )
699- elementToStringRef = scArrays . getMethod ( "java.lang.String toString(double[])" ). makeRef ( );
700+ elementToStringRef = scene . makeMethodRef ( scArrays , "java.lang.String toString(double[])" , true );
700701 else {
701702 throw new RuntimeException (String .format (
702703 "Invalid array element type %s for string concatenation in dynamic invocation" ,
0 commit comments