--- old/src/java.base/share/classes/java/util/zip/ZipFile.java 2018-03-28 16:17:50.232357296 -0700 +++ new/src/java.base/share/classes/java/util/zip/ZipFile.java 2018-03-28 16:17:49.984355024 -0700 @@ -64,6 +64,7 @@ import jdk.internal.misc.VM; import jdk.internal.perf.PerfCounter; import jdk.internal.ref.CleanerFactory; +import jdk.internal.vm.annotation.Stable; import static java.util.zip.ZipConstants64.*; import static java.util.zip.ZipUtils.*; @@ -98,14 +99,14 @@ private final String name; // zip file name private volatile boolean closeRequested; - private ZipCoder zc; + private final @Stable ZipCoder zc; // The "resource" used by this zip file that needs to be // cleaned after use. // a) the input streams that need to be closed // b) the list of cached Inflater objects // c) the "native" source of this zip file. - private final CleanableResource res; + private final @Stable CleanableResource res; private static final int STORED = ZipEntry.STORED; private static final int DEFLATED = ZipEntry.DEFLATED; @@ -369,7 +370,7 @@ public InputStream getInputStream(ZipEntry entry) throws IOException { Objects.requireNonNull(entry, "entry"); int pos = -1; - ZipFileInputStream in = null; + ZipFileInputStream in; Source zsrc = res.zsrc; Set istreams = res.istreams; synchronized (this) { @@ -604,9 +605,7 @@ private String getEntryName(int pos) { byte[] cen = res.zsrc.cen; int nlen = CENNAM(cen, pos); - int clen = CENCOM(cen, pos); - int flag = CENFLG(cen, pos); - if (!zc.isUTF8() && (flag & EFS) != 0) { + if (!zc.isUTF8() && (CENFLG(cen, pos) & EFS) != 0) { return zc.toStringUTF8(cen, pos + CENHDR, nlen); } else { return zc.toString(cen, pos + CENHDR, nlen); @@ -1218,7 +1217,7 @@ static Source get(File file, boolean toDelete) throws IOException { Key key = new Key(file, Files.readAttributes(file.toPath(), BasicFileAttributes.class)); - Source src = null; + Source src; synchronized (files) { src = files.get(key); if (src != null) {