Integrated: 8304759: Add BitMap iterators
Kim Barrett
kbarrett at openjdk.org
Wed Mar 29 17:22:39 UTC 2023
On Sat, 25 Mar 2023 15:43:29 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:
> Please review this change which adds iteration over the set bit positions of a
> BitMap via an iterator object. This is in addition to the existing iterate()
> and reverse_iterate() functions that apply a function to the set bit positions.
>
> There are two iterator classes: BitMap::Iterator and BitMap::ReverseIterator.
> Iteration uses a single, self-contained iterator object, rather than a pair of
> iterator objects as is done with standard library iterators. This is because
> the desired form of iteration over bitmaps doesn't lend itself well to the
> begin/end pair style. Typical usage is something like
>
>
> for (BitMap::Iterator it{map, beg, end}; !it.is_empty(); it.step()) {
> ... use it.index()
> }
>
>
> However, as a syntactic convenience, these iterator classes provide begin()
> and end() member functions returning objects supporting the requirements for
> range-based for loops. By constraining these objects to this usage we can
> cope with the "iterator pair" requirements. Usage is something like
>
>
> for (BitMap::idx_t index : BitMap::Iterator{map, beg, end}) {
> ...
> }
>
>
> Testing:
> mach5 tier1, which includes running the updated gtests on all Oracle-supported
> platforms.
This pull request has now been integrated.
Changeset: 34f4d7f4
Author: Kim Barrett <kbarrett at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/34f4d7f4ad388d8264225c2aefe048ca9a42cfa2
Stats: 381 lines in 4 files changed: 381 ins; 0 del; 0 mod
8304759: Add BitMap iterators
Reviewed-by: stefank, aboldtch, tschatzl
-------------
PR: https://git.openjdk.org/jdk/pull/13184
More information about the hotspot-dev
mailing list