RFR: 8300236: Use VarHandle access in Data(Input | Output)Stream classes

Roger Riggs rriggs at openjdk.org
Thu Jan 19 20:00:24 UTC 2023


On Wed, 18 Jan 2023 16:34:57 GMT, Per Minborg <pminborg at openjdk.org> wrote:

> This PR proposes using a performance optimization using a new supported API for operations similar to those found in `java.io.Bits`

Some comments:

src/java.base/share/classes/jdk/internal/util/Bits.java line 43:

> 41:     }
> 42: 
> 43:     public static final class BigEndian {

Are there other names that improve the readability of the uses?
For example `ByteArray.getShort()` and `ByteArray.getDouble`.

There's been a move to drop `get` and `put` prefixes where they are unnecessary.
Get and put prefixes do make them similar to the existing methods, but...

Is it just a readable to say:
   `float degrees = ByteArray.float(buf);`      // for get
    `ByteArray.int(buf, degrees);`                   // for put

Maybe, maybe not....

src/java.base/share/classes/jdk/internal/util/Bits.java line 161:

> 159:     }
> 160: 
> 161:     public static final class BigEndianAtZero {

I'd merge these methods (with zero offset) in with the previous class; the overloads with offsets are sufficient to distinguish them and it would make discovery more natural. (omitting this class).

src/java.base/share/classes/jdk/internal/util/Bits.java line 284:

> 282: 
> 283:     // Alternative with an internal buffer fixed att offset zero.
> 284:     public static final class BigEndianAtZeroBuffer {

I'd keep it simple an leave the buffer management to the caller. (Omitting this class).

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

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


More information about the core-libs-dev mailing list