RFR: 8296139: Make GrowableBitMap the base class of all implementations [v4]
Xin Liu
xliu at openjdk.org
Sat Nov 5 00:53:51 UTC 2022
> BitMap is an abstract class. All subclasses provide their own allocators. It is the allocator brings the capability to 'resize' the container.
> I would like to add a new 'GrowableBitmap' and make it the common base class.
>
> To substitute 'VectorSet', we also need to merge ResourceBitMap and ArenaBitMap because VectorSet supports Resource and Arena storage at the same time.
> This patch unifies them. ResourceBitMap is a specialized ArenaBitMap whose allocator is with NULL arena.
>
> All subclasses of GrowableBitMap are elastic. I will add new interface like VectorSet::test_set(index). It will grow to include the new index.
Xin Liu has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains eight commits:
- Merge branch 'master' into JDK-8296139
- Bring back verify_size to the constructor of BitMap.
Also resume the underlying member data to be private. Subclasses of
GrowableBitMap update them using update(map, size).
- Reivew comments from stefank
- Refactor GrowableBitMap using C++ CRTP
With CPTP, we don't need to have explicit Allocators. Subclasses expose
allocate/free member functions upward to GrowableBitMap<BitMapWithAllocator>. This
aproach is similar to GrowableArray.
- Add unittest for Arena.
- Avoid polluting namespace.
uses qualified bm_word_t and idx_t.
- Change ResourceBitMap to subclass of ArenaBitMap.
- Add GrowableBitMap.
-------------
Changes: https://git.openjdk.org/jdk/pull/10941/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10941&range=03
Stats: 280 lines in 3 files changed: 85 ins; 143 del; 52 mod
Patch: https://git.openjdk.org/jdk/pull/10941.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/10941/head:pull/10941
PR: https://git.openjdk.org/jdk/pull/10941
More information about the hotspot-runtime-dev
mailing list