Merge remote-tracking branch 'origin/patch'

This commit is contained in:
Ryan Kurtz 2023-01-13 12:32:34 -05:00
commit 539d5b2aad
4 changed files with 50 additions and 12 deletions

View file

@ -415,7 +415,7 @@ public class DynamicHash {
hash <<= 4;
hash |= method; // 4-bits
hash <<= 7;
hash |= op.getOpcode(); // 7-bits
hash |= transtable[op.getOpcode()]; // 7-bits
hash <<= 5;
hash |= slot & 0x1f; // 5-bits
@ -705,6 +705,21 @@ public class DynamicHash {
}
}
private static void dedupVarnodes(ArrayList<Varnode> varlist) {
if (varlist.size() < 2) {
return;
}
ArrayList<Varnode> resList = new ArrayList<>();
HashSet<Varnode> hashSet = new HashSet<>();
for (Varnode vn : varlist) {
if (hashSet.add(vn)) {
resList.add(vn);
}
}
varlist.clear();
varlist.addAll(resList);
}
public static void gatherFirstLevelVars(ArrayList<Varnode> varlist, PcodeSyntaxTree fd,
Address addr, long h) {
int opc = getOpCodeFromHash(h);
@ -714,7 +729,7 @@ public class DynamicHash {
while (iter.hasNext()) {
PcodeOp op = iter.next();
if (op.getOpcode() != opc) {
if (transtable[op.getOpcode()] != opc) {
continue;
}
if (slot < 0) {
@ -745,6 +760,7 @@ public class DynamicHash {
varlist.add(vn);
}
}
dedupVarnodes(varlist);
}
public static int getSlotFromHash(long h) {