Commit 533883b5 authored by Skylot's avatar Skylot

Fix arguments types in array-put instruction

parent 2e40ca17
...@@ -40,16 +40,11 @@ public class PostTypeResolver { ...@@ -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 { ...@@ -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;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment