RFR: 8261744: Implement CharsetDecoder ASCII and latin-1 fast-paths [v4]

Naoto Sato naoto at openjdk.java.net
Fri Feb 19 14:27:42 UTC 2021


On Thu, 18 Feb 2021 23:16:00 GMT, Claes Redestad <redestad at openjdk.org> wrote:

>> This patch exposes a couple of intrinsics used by String to speed up ASCII checking and byte[] -> char[] inflation, which can be used by latin1 and ASCII-compatible CharsetDecoders to speed up decoding operations.
>> 
>> - Fast-path implemented for all standard charsets, with up to 10x performance improvements in microbenchmarks reading Strings from ByteArrayInputStream. 
>> - Cleanup of StreamDecoder/-Encoder with some minor improvements when interpreting
>> - Reworked creation of JavaLangAccess to be safely published for CharsetDecoders/-Encoders used for setting up System.out/in. As JLA and these encoders are created during System.initPhase1 the current sequence caused the initialization to became unstable and a few tests were consistently getting an NPE.
>> 
>> Testing: tier1-3
>
> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Revert JavaLangAccessImpl changes

Marked as reviewed by naoto (Reviewer).

src/java.base/share/classes/java/lang/System.java line 1988:

> 1986:         // might initialize CharsetDecoders that rely on it
> 1987:         setJavaLangAccess();
> 1988: 

Good to see the init issue has been resolved with a simple reordering.

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

PR: https://git.openjdk.java.net/jdk/pull/2574


More information about the core-libs-dev mailing list