| 97 | } |
| 98 | |
| 99 | void AccessMap::InfillGaps(const AccessRange& range, const AccessState& access_state) { |
| 100 | AccessMapLocator pos(*this, range.begin); |
| 101 | while (range.includes(pos.index)) { |
| 102 | if (!pos.inside_lower_bound_range) { |
| 103 | if (pos.lower_bound == end() || range.end <= pos.lower_bound->first.begin) { |
| 104 | const AccessRange gap_range(pos.index, range.end); |
| 105 | impl_map_.insert(pos.lower_bound, {gap_range, access_state}); |
| 106 | return; // reached range.end |
| 107 | } else { |
| 108 | const AccessRange gap_range(pos.index, pos.lower_bound->first.begin); |
| 109 | impl_map_.insert(pos.lower_bound, {gap_range, access_state}); |
| 110 | pos.Seek(pos.lower_bound->first.end); |
| 111 | } |
| 112 | } else { |
| 113 | pos.Seek(pos.lower_bound->first.end); |
| 114 | } |
| 115 | } |
| 116 | } |
| 117 | |
| 118 | AccessMap::iterator AccessMap::Split(const iterator split_it, const index_type& index) { |
| 119 | const auto range = split_it->first; |
no test coverage detected