mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GT-3223_emteere Minor changes for performance issues on large programs
This commit is contained in:
@@ -71,6 +71,8 @@ public class PseudoDisassembler {
|
|||||||
|
|
||||||
private boolean respectExecuteFlag = false;
|
private boolean respectExecuteFlag = false;
|
||||||
|
|
||||||
|
private AddressSetView executeSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a pseudo disassembler for the given program.
|
* Create a pseudo disassembler for the given program.
|
||||||
*/
|
*/
|
||||||
@@ -78,6 +80,8 @@ public class PseudoDisassembler {
|
|||||||
this.program = program;
|
this.program = program;
|
||||||
|
|
||||||
memory = program.getMemory();
|
memory = program.getMemory();
|
||||||
|
|
||||||
|
executeSet = memory.getExecuteSet();
|
||||||
|
|
||||||
this.language = program.getLanguage();
|
this.language = program.getLanguage();
|
||||||
|
|
||||||
@@ -615,8 +619,6 @@ public class PseudoDisassembler {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
AddressSetView executeSet = memory.getExecuteSet();
|
|
||||||
|
|
||||||
RepeatInstructionByteTracker repeatInstructionByteTracker =
|
RepeatInstructionByteTracker repeatInstructionByteTracker =
|
||||||
new RepeatInstructionByteTracker(MAX_REPEAT_BYTES_LIMIT, null);
|
new RepeatInstructionByteTracker(MAX_REPEAT_BYTES_LIMIT, null);
|
||||||
|
|
||||||
@@ -878,7 +880,6 @@ public class PseudoDisassembler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check that body does not wander into non-executable memory
|
// check that body does not wander into non-executable memory
|
||||||
AddressSetView executeSet = program.getMemory().getExecuteSet();
|
|
||||||
if (respectExecuteFlag && !executeSet.isEmpty() && !body.subtract(executeSet).isEmpty()) {
|
if (respectExecuteFlag && !executeSet.isEmpty() && !body.subtract(executeSet).isEmpty()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -390,7 +390,7 @@ class BigRefListV0 extends RefList {
|
|||||||
if (maxLevel < level) {
|
if (maxLevel < level) {
|
||||||
maxLevel = level;
|
maxLevel = level;
|
||||||
}
|
}
|
||||||
if (level > currentRefLevel) {
|
if (level >= currentRefLevel) {
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ class RefListV0 extends RefList {
|
|||||||
if (maxLevel < level) {
|
if (maxLevel < level) {
|
||||||
maxLevel = level;
|
maxLevel = level;
|
||||||
}
|
}
|
||||||
if (level > currentRefLevel) {
|
if (level >= currentRefLevel) {
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user