--- old/src/java.base/share/classes/java/util/zip/ZipCoder.java 2018-05-13 14:17:09.996206571 -0700 +++ new/src/java.base/share/classes/java/util/zip/ZipCoder.java 2018-05-13 14:17:09.584206420 -0700 @@ -33,8 +33,6 @@ import java.nio.charset.CharacterCodingException; import java.nio.charset.CodingErrorAction; -import static java.nio.charset.StandardCharsets.UTF_8; - /** * Utility class for zipfile name and comment decoding and encoding */ @@ -46,9 +44,7 @@ static final class UTF8 extends ZipCoder { - UTF8(Charset utf8) { - super(utf8); - } + UTF8() { super(java.nio.charset.StandardCharsets.UTF_8); } @Override boolean isUTF8() { @@ -67,10 +63,10 @@ } // UTF_8.ArrayEn/Decoder is stateless, so make it singleton. - private static ZipCoder utf8 = new UTF8(UTF_8); + private static final ZipCoder utf8 = new UTF8(); public static ZipCoder get(Charset charset) { - if (charset == UTF_8) + if (charset == java.nio.charset.StandardCharsets.UTF_8) return utf8; return new ZipCoder(charset); } @@ -107,24 +103,23 @@ } } - // assume invoked only if "this" is not utf8 - byte[] getBytesUTF8(String s) { - return utf8.getBytes(s); + static byte[] getBytesUTF8(String s) { + return JLA.getBytesUTF8NoRepl(s); } - String toStringUTF8(byte[] ba, int len) { - return utf8.toString(ba, 0, len); + static String toStringUTF8(byte[] ba, int len) { + return JLA.newStringUTF8NoRepl(ba, 0, len); } - String toStringUTF8(byte[] ba, int off, int len) { - return utf8.toString(ba, off, len); + static String toStringUTF8(byte[] ba, int off, int len) { + return JLA.newStringUTF8NoRepl(ba, off, len); } boolean isUTF8() { return false; } - private Charset cs; + private final Charset cs; private CharsetDecoder dec; private CharsetEncoder enc; @@ -133,20 +128,18 @@ } protected CharsetDecoder decoder() { - if (dec == null) { - dec = cs.newDecoder() - .onMalformedInput(CodingErrorAction.REPORT) - .onUnmappableCharacter(CodingErrorAction.REPORT); - } - return dec; + final CharsetDecoder dec = this.dec; + return (dec != null) ? dec : + (this.dec = cs.newDecoder() + .onMalformedInput(CodingErrorAction.REPORT) + .onUnmappableCharacter(CodingErrorAction.REPORT)); } protected CharsetEncoder encoder() { - if (enc == null) { - enc = cs.newEncoder() - .onMalformedInput(CodingErrorAction.REPORT) - .onUnmappableCharacter(CodingErrorAction.REPORT); - } - return enc; + final CharsetEncoder enc = this.enc; + return (enc != null) ? enc : + (this.enc = cs.newEncoder() + .onMalformedInput(CodingErrorAction.REPORT) + .onUnmappableCharacter(CodingErrorAction.REPORT)); } }