Fix arguments types in array-put instruction
This commit is contained in:
@@ -40,16 +40,11 @@ public class PostTypeResolver {
|
|||||||
return change;
|
return change;
|
||||||
}
|
}
|
||||||
|
|
||||||
case AGET: {
|
case AGET:
|
||||||
boolean change = false;
|
return fixArrayTypes(insn.getArg(0), insn.getResult());
|
||||||
RegisterArg elem = insn.getResult();
|
|
||||||
InsnArg array = insn.getArg(0);
|
case APUT:
|
||||||
if (!elem.getType().isTypeKnown() && elem.merge(array.getType().getArrayElement()))
|
return fixArrayTypes(insn.getArg(0), insn.getArg(2));
|
||||||
change = true;
|
|
||||||
if (!array.getType().isTypeKnown() && array.merge(ArgType.array(elem.getType())))
|
|
||||||
change = true;
|
|
||||||
return change;
|
|
||||||
}
|
|
||||||
|
|
||||||
case IF: {
|
case IF: {
|
||||||
boolean change = false;
|
boolean change = false;
|
||||||
@@ -69,4 +64,13 @@ public class PostTypeResolver {
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean fixArrayTypes(InsnArg array, InsnArg elem) {
|
||||||
|
boolean change = false;
|
||||||
|
if (!elem.getType().isTypeKnown() && elem.merge(array.getType().getArrayElement()))
|
||||||
|
change = true;
|
||||||
|
if (!array.getType().isTypeKnown() && array.merge(ArgType.array(elem.getType())))
|
||||||
|
change = true;
|
||||||
|
return change;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user