|
58 | 58 | public class FastHierarchy {
|
59 | 59 |
|
60 | 60 | protected static final int USE_INTERVALS_BOUNDARY = 100;
|
| 61 | + private final boolean isDotNet = Options.v().src_prec() == Options.src_prec_dotnet; |
61 | 62 |
|
62 | 63 | protected Table<SootClass, NumberedString, SootMethod> typeToVtbl = HashBasedTable.create();
|
63 | 64 |
|
@@ -904,7 +905,7 @@ private SootMethod resolveMethod(final SootClass baseType, final SootClass decla
|
904 | 905 | // determining the most specific super interface
|
905 | 906 | HashSet<SootClass> interfaceIgnoreList = new HashSet<>();
|
906 | 907 | for (SootClass concreteType = baseType; concreteType != null;) {
|
907 |
| - Queue<SootClass> worklist = new LinkedList<>(concreteType.getInterfaces()); |
| 908 | + Queue<SootClass> worklist = new ArrayDeque<>(concreteType.getInterfaces()); |
908 | 909 | // we have to determine the "most specific super interface"
|
909 | 910 | while (!worklist.isEmpty()) {
|
910 | 911 | SootClass iFace = worklist.poll();
|
@@ -941,7 +942,7 @@ private SootMethod resolveMethod(final SootClass baseType, final SootClass decla
|
941 | 942 | return candidate;
|
942 | 943 | }
|
943 | 944 |
|
944 |
| - private boolean isHandleDefaultMethods() { |
| 945 | + protected boolean isHandleDefaultMethods() { |
945 | 946 | int version = Options.v().java_version();
|
946 | 947 | return version == 0 || version > 7;
|
947 | 948 | }
|
@@ -985,7 +986,7 @@ private SootMethod getSignaturePolymorphicMethod(SootClass concreteType, String
|
985 | 986 | returnType = method.getReturnType();
|
986 | 987 | }
|
987 | 988 | // if dotnet structs or generics
|
988 |
| - if (Options.v().src_prec() == Options.src_prec_dotnet) { |
| 989 | + if (isDotNet) { |
989 | 990 | if (method.getParameterCount() == parameterTypes.size() && canStoreType(returnType, method.getReturnType())) {
|
990 | 991 | boolean canStore = true;
|
991 | 992 | for (int i = 0; i < method.getParameterCount(); i++) {
|
|
0 commit comments