RFR: 8299576: Reimplement java.io.Bits using VarHandle access

Michael Kuhlmann jdk at fiolino.de
Wed Jan 4 11:19:15 UTC 2023


On 1/4/23 09:56, Per Minborg wrote:
> Currently, `java.io.Bits` is using explicit logic to read/write various primitive types to/from byte arrays. Switching to the use of `VarHandle` access would provide better performance and less code.

Hmh, Javadoc for MethodHandels::byteArrayViewVarHandle says the following:

  * read write access modes for all T, with the exception of access 
modes get and set for long and double on 32-bit platforms.

Are you sure that your change will work correctly on a 32-bit platform? 
 From what I read, it could throw an IllegalStateException when a long 
value is read/written.

-Michael

> 
> Also, using a standard API for these conversions means future `VarHandle` improvements will benefit `Bits` too.
> 
> Improvements in `Bits` will propagate to `ObjectInputStream`, `ObjectOutputStream` and `RandomAccessFile`.
> 
> Initial benchmarks and performance discussions can be found here: https://github.com/openjdk/panama-foreign/pull/762
> 
> -------------
> 
> Commit messages:
>   - Update copyright year to 2023
>   - Update copyright year
>   - Reimplement java.io.Bits using VarHandle access
> 
> Changes: https://git.openjdk.org/jdk/pull/11840/files
>   Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11840&range=00
>    Issue: https://bugs.openjdk.org/browse/JDK-8299576
>    Stats: 463 lines in 2 files changed: 424 ins; 24 del; 15 mod
>    Patch: https://git.openjdk.org/jdk/pull/11840.diff
>    Fetch: git fetch https://git.openjdk.org/jdk pull/11840/head:pull/11840
> 
> PR: https://git.openjdk.org/jdk/pull/11840


More information about the core-libs-dev mailing list