llvm-objdump: speed up -objc-meta-data
Running a Debug build of objdump -objc-meta-data with a large Mach-O file is currently unnecessarily slow. With some local test input, this change reduces the run time from 75-85s down to 15-20s. The two changes are: Assert on pointer equality not array equality Replace vector<pair<address, symbol>> with DenseMap<address, symbol> Additionally, use a std::unique_ptr rather than handling the memory manually. Patch by Dave Lee! llvm-svn: 291398
This commit is contained in:
@@ -2823,7 +2823,11 @@ StringRef MachORebaseEntry::typeName() const {
|
||||
}
|
||||
|
||||
bool MachORebaseEntry::operator==(const MachORebaseEntry &Other) const {
|
||||
#ifdef EXPENSIVE_CHECKS
|
||||
assert(Opcodes == Other.Opcodes && "compare iterators of different files");
|
||||
#else
|
||||
assert(Opcodes.data() == Other.Opcodes.data() && "compare iterators of different files");
|
||||
#endif
|
||||
return (Ptr == Other.Ptr) &&
|
||||
(RemainingLoopCount == Other.RemainingLoopCount) &&
|
||||
(Done == Other.Done);
|
||||
@@ -3073,7 +3077,11 @@ uint32_t MachOBindEntry::flags() const { return Flags; }
|
||||
int MachOBindEntry::ordinal() const { return Ordinal; }
|
||||
|
||||
bool MachOBindEntry::operator==(const MachOBindEntry &Other) const {
|
||||
#ifdef EXPENSIVE_CHECKS
|
||||
assert(Opcodes == Other.Opcodes && "compare iterators of different files");
|
||||
#else
|
||||
assert(Opcodes.data() == Other.Opcodes.data() && "compare iterators of different files");
|
||||
#endif
|
||||
return (Ptr == Other.Ptr) &&
|
||||
(RemainingLoopCount == Other.RemainingLoopCount) &&
|
||||
(Done == Other.Done);
|
||||
|
||||
Reference in New Issue
Block a user