Simplify the handling of iterators in ObjectFile.
None of the object file formats reported error on iterator increment. In retrospect, that is not too surprising: no object format stores symbols or sections in a linked list or other structure that requires chasing pointers. As a consequence, all error checking can be done on begin() and end(). This reduces the text segment of bin/llvm-readobj in my machine from 521233 to 518526 bytes. llvm-svn: 200442
This commit is contained in:
@@ -84,9 +84,7 @@ LLVMBool LLVMIsSectionIteratorAtEnd(LLVMObjectFileRef ObjectFile,
|
||||
}
|
||||
|
||||
void LLVMMoveToNextSection(LLVMSectionIteratorRef SI) {
|
||||
error_code ec;
|
||||
unwrap(SI)->increment(ec);
|
||||
if (ec) report_fatal_error("LLVMMoveToNextSection failed: " + ec.message());
|
||||
++(*unwrap(SI));
|
||||
}
|
||||
|
||||
void LLVMMoveToContainingSection(LLVMSectionIteratorRef Sect,
|
||||
@@ -111,9 +109,7 @@ LLVMBool LLVMIsSymbolIteratorAtEnd(LLVMObjectFileRef ObjectFile,
|
||||
}
|
||||
|
||||
void LLVMMoveToNextSymbol(LLVMSymbolIteratorRef SI) {
|
||||
error_code ec;
|
||||
unwrap(SI)->increment(ec);
|
||||
if (ec) report_fatal_error("LLVMMoveToNextSymbol failed: " + ec.message());
|
||||
++(*unwrap(SI));
|
||||
}
|
||||
|
||||
// SectionRef accessors
|
||||
@@ -169,10 +165,7 @@ LLVMBool LLVMIsRelocationIteratorAtEnd(LLVMSectionIteratorRef Section,
|
||||
}
|
||||
|
||||
void LLVMMoveToNextRelocation(LLVMRelocationIteratorRef SI) {
|
||||
error_code ec;
|
||||
unwrap(SI)->increment(ec);
|
||||
if (ec) report_fatal_error("LLVMMoveToNextRelocation failed: " +
|
||||
ec.message());
|
||||
++(*unwrap(SI));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user