RFR: 8299807: newStringNoRepl should avoid copying arrays for ASCII compatible charsets

Glavo duke at openjdk.org
Sat Jan 28 04:06:51 UTC 2023


This is the javadoc of `JavaLangAccess::newStringNoRepl`:


    /**
     * Constructs a new {@code String} by decoding the specified subarray of
     * bytes using the specified {@linkplain java.nio.charset.Charset charset}.
     *
     * The caller of this method shall relinquish and transfer the ownership of
     * the byte array to the callee since the later will not make a copy.
     *
     * @param bytes the byte array source
     * @param cs the Charset
     * @return the newly created string
     * @throws CharacterCodingException for malformed or unmappable bytes
     */


It is recorded in the document that it should be able to directly construct strings with parameter byte array to reduce array allocation.

However, at present, `newStringNoRepl` always copies arrays for UTF-8 or other ASCII compatible charsets.

This PR fixes this problem.

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

Commit messages:
 - newStringNoRepl should avoid copying arrays for ASCII compatible charsets

Changes: https://git.openjdk.org/jdk/pull/12119/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12119&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8299807
  Stats: 7 lines in 2 files changed: 4 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/12119.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12119/head:pull/12119

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


More information about the core-libs-dev mailing list