@@ -116,19 +116,25 @@ using FieldRecord = TargetFieldRecord<InProcess>;
116116
117117template <typename Runtime>
118118struct TargetFieldRecordIterator {
119+ uint16_t RecordSize;
119120 const TargetFieldRecord<Runtime> *Cur;
120121 const TargetFieldRecord<Runtime> *const End;
121122
122- TargetFieldRecordIterator (const TargetFieldRecord<Runtime> *Cur,
123+ TargetFieldRecordIterator (uint16_t RecordSize,
124+ const TargetFieldRecord<Runtime> *Cur,
123125 const TargetFieldRecord<Runtime> *const End)
124- : Cur(Cur), End(End) {}
126+ : RecordSize(RecordSize), Cur(Cur), End(End) {}
125127
126128 const TargetFieldRecord<Runtime> &operator *() const { return *Cur; }
127129
128130 const TargetFieldRecord<Runtime> *operator ->() const { return Cur; }
129131
132+ static const TargetFieldRecord<Runtime> *advanceRecordPointer (const TargetFieldRecord<Runtime> *Ptr, size_t bytes) {
133+ return reinterpret_cast <const TargetFieldRecord<Runtime> *>(reinterpret_cast <const char *>(Ptr) + bytes);
134+ }
135+
130136 TargetFieldRecordIterator &operator ++() {
131- ++ Cur;
137+ Cur = advanceRecordPointer (Cur, RecordSize) ;
132138 return *this ;
133139 }
134140
@@ -215,14 +221,15 @@ class TargetFieldDescriptor {
215221
216222 const_iterator begin () const {
217223 auto Begin = getFieldRecordBuffer ();
218- auto End = Begin + NumFields;
219- return const_iterator { Begin, End };
224+ auto End = FieldRecordIterator::advanceRecordPointer (Begin, NumFields * FieldRecordSize);
225+ fprintf (stderr, " FieldRecordIterator begin %p end %p\n " , Begin, End);
226+ return const_iterator { FieldRecordSize, Begin, End };
220227 }
221228
222229 const_iterator end () const {
223230 auto Begin = getFieldRecordBuffer ();
224- auto End = Begin + NumFields;
225- return const_iterator { End, End };
231+ auto End = FieldRecordIterator::advanceRecordPointer ( Begin, NumFields * FieldRecordSize) ;
232+ return const_iterator { FieldRecordSize, End, End };
226233 }
227234
228235 llvm::ArrayRef<TargetFieldRecord<Runtime>> getFields () const {
0 commit comments