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:
Rafael Espindola
2014-01-30 02:49:50 +00:00
parent 980f2dc4fc
commit 5e812afaeb
25 changed files with 147 additions and 365 deletions

View File

@@ -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));
}