RFR: 8315454: Add an immutable BitSet

Per Minborg pminborg at openjdk.org
Fri Sep 1 08:31:13 UTC 2023


This PR proposes adding a new method to BitSet that provides an immutable snapshot of the set in the form of an `IntPredicate`.

The predicate is eligible for constant folding.

Here are some classes in the JDK that would benefit directly from constant-folding of BitSets:

PoolReader (6)
URLEncoder (1) - Updated in this PR
HtmlTree (2)

More over, the implementation of the predicate is @ValueBased and this would provide additional benefits in the future.

Initial benchmarks with the URLEncoder show encouraging results:


Name                           (encodeChars) (maxLength) (unchanged) Cnt  Base   Error   Test   Error  Unit  Diff%
URLEncodeDecode.testEncodeUTF8             6        1024           0  15 2,371 ± 0,016  2,073 ± 0,184 ms/op  12,6% (p = 0,000*)
URLEncodeDecode.testEncodeUTF8             6        1024          75  15 1,772 ± 0,013  1,387 ± 0,032 ms/op  21,8% (p = 0,000*)
URLEncodeDecode.testEncodeUTF8             6        1024         100  15 1,230 ± 0,009  1,140 ± 0,011 ms/op   7,3% (p = 0,000*)

-------------

Commit messages:
 - Add test and remove updates for some JDK classes

Changes: https://git.openjdk.org/jdk/pull/15530/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15530&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8315454
  Stats: 153 lines in 3 files changed: 140 ins; 1 del; 12 mod
  Patch: https://git.openjdk.org/jdk/pull/15530.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/15530/head:pull/15530

PR: https://git.openjdk.org/jdk/pull/15530


More information about the core-libs-dev mailing list