Skip to content

Commit c4d703e

Browse files
committed
Implement code review feedback, with some minor tweaks because initializer list isn't convertable, and the iterator doesn't have the traits for std::next
1 parent 3a4e598 commit c4d703e

File tree

3 files changed

+15
-35
lines changed

3 files changed

+15
-35
lines changed

llvm/include/llvm/Object/Minidump.h

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -221,27 +221,20 @@ class MinidumpFile : public Binary {
221221

222222
class ExceptionStreamsIterator {
223223
public:
224-
static ExceptionStreamsIterator begin(ArrayRef<minidump::Directory> Streams,
225-
const MinidumpFile *File) {
226-
return ExceptionStreamsIterator(Streams, File);
227-
}
228-
229-
static ExceptionStreamsIterator end() { return ExceptionStreamsIterator(); }
224+
ExceptionStreamsIterator(ArrayRef<minidump::Directory> Streams,
225+
const MinidumpFile *File)
226+
: Streams(Streams), File(File) {}
230227

231228
bool operator==(const ExceptionStreamsIterator &R) const {
232-
return Streams.empty() && R.Streams.empty();
229+
return Streams.size() == R.Streams.size();
233230
}
234231

235232
bool operator!=(const ExceptionStreamsIterator &R) const {
236233
return !(*this == R);
237234
}
238235

239236
Expected<const minidump::ExceptionStream &> operator*() {
240-
return ReadCurrent();
241-
}
242-
243-
Expected<const minidump::ExceptionStream &> operator->() {
244-
return ReadCurrent();
237+
return File->getExceptionStream(Streams.front());
245238
}
246239

247240
ExceptionStreamsIterator &operator++() {
@@ -252,25 +245,8 @@ class MinidumpFile : public Binary {
252245
}
253246

254247
private:
255-
ExceptionStreamsIterator(ArrayRef<minidump::Directory> Streams,
256-
const MinidumpFile *File)
257-
: Streams(Streams), File(File) {}
258-
259-
ExceptionStreamsIterator()
260-
: Streams(ArrayRef<minidump::Directory>()), File(nullptr) {}
261-
262248
ArrayRef<minidump::Directory> Streams;
263249
const MinidumpFile *File;
264-
265-
Expected<const minidump::ExceptionStream &> ReadCurrent() {
266-
assert(!Streams.empty());
267-
Expected<const minidump::ExceptionStream &> ExceptionStream =
268-
File->getExceptionStream(Streams.front());
269-
if (!ExceptionStream)
270-
return ExceptionStream.takeError();
271-
272-
return ExceptionStream;
273-
}
274250
};
275251

276252
using FallibleMemory64Iterator = llvm::fallible_iterator<Memory64Iterator>;

llvm/lib/Object/Minidump.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ Expected<std::string> MinidumpFile::getString(size_t Offset) const {
5555

5656
iterator_range<llvm::object::MinidumpFile::ExceptionStreamsIterator>
5757
MinidumpFile::getExceptionStreams() const {
58-
return make_range(ExceptionStreamsIterator::begin(ExceptionStreams, this),
59-
ExceptionStreamsIterator::end());
58+
return make_range(ExceptionStreamsIterator(ExceptionStreams, this),
59+
ExceptionStreamsIterator({}, this));
6060
}
6161

6262
Expected<iterator_range<MinidumpFile::MemoryInfoIterator>>
@@ -167,7 +167,7 @@ MinidumpFile::create(MemoryBufferRef Source) {
167167
}
168168

169169
return std::unique_ptr<MinidumpFile>(new MinidumpFile(
170-
Source, Hdr, *ExpectedStreams, std::move(StreamMap), ExceptionStreams));
170+
Source, Hdr, *ExpectedStreams, std::move(StreamMap), std::move(ExceptionStreams)));
171171
}
172172

173173
iterator_range<MinidumpFile::FallibleMemory64Iterator>

llvm/unittests/Object/MinidumpTest.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,7 @@ TEST(MinidumpFile, getMemoryInfoList) {
711711
0x0001000908000000u));
712712
}
713713

714-
TEST(MinidumpFile, getExceptionStream) {
714+
TEST(MinidumpFile, getExceptionStreams) {
715715
std::vector<uint8_t> Data{
716716
// Header
717717
'M', 'D', 'M', 'P', 0x93, 0xa7, 0, 0, // Signature, Version
@@ -751,8 +751,10 @@ TEST(MinidumpFile, getExceptionStream) {
751751
auto ExpectedFile = create(Data);
752752
ASSERT_THAT_EXPECTED(ExpectedFile, Succeeded());
753753
const MinidumpFile &File = **ExpectedFile;
754-
auto ExceptionIterator = File.getExceptionStreams().begin();
755-
754+
755+
auto ExceptionStreams = File.getExceptionStreams();
756+
ASSERT_NE(ExceptionStreams.begin(), ExceptionStreams.end());
757+
auto ExceptionIterator = ExceptionStreams.begin();
756758
Expected<const ExceptionStream &> ExpectedStream = *ExceptionIterator;
757759
ASSERT_THAT_EXPECTED(ExpectedStream, Succeeded());
758760
EXPECT_EQ(0x04030201u, ExpectedStream->ThreadId);
@@ -768,4 +770,6 @@ TEST(MinidumpFile, getExceptionStream) {
768770
}
769771
EXPECT_EQ(0x84838281, ExpectedStream->ThreadContext.DataSize);
770772
EXPECT_EQ(0x88878685, ExpectedStream->ThreadContext.RVA);
773+
++ExceptionIterator;
774+
ASSERT_EQ(ExceptionIterator, ExceptionStreams.end());
771775
}

0 commit comments

Comments
 (0)