src/java.base/share/classes/java/util/zip/ZipUtils.java
changeset 52220 9c260a6b6471
parent 50238 a9307f400f5a
child 55693 9a97b1393e72
equal deleted inserted replaced
52219:151b990e3764 52220:9c260a6b6471
    23  * questions.
    23  * questions.
    24  */
    24  */
    25 
    25 
    26 package java.util.zip;
    26 package java.util.zip;
    27 
    27 
    28 import java.nio.Buffer;
       
    29 import java.nio.ByteBuffer;
    28 import java.nio.ByteBuffer;
    30 import java.nio.file.attribute.FileTime;
    29 import java.nio.file.attribute.FileTime;
    31 import java.security.AccessController;
    30 import java.security.AccessController;
    32 import java.security.PrivilegedAction;
    31 import java.security.PrivilegedAction;
    33 import java.time.DateTimeException;
    32 import java.time.DateTimeException;
    38 import java.util.concurrent.TimeUnit;
    37 import java.util.concurrent.TimeUnit;
    39 
    38 
    40 import static java.util.zip.ZipConstants.ENDHDR;
    39 import static java.util.zip.ZipConstants.ENDHDR;
    41 
    40 
    42 import jdk.internal.misc.Unsafe;
    41 import jdk.internal.misc.Unsafe;
    43 import sun.nio.ch.DirectBuffer;
       
    44 
    42 
    45 class ZipUtils {
    43 class ZipUtils {
    46 
    44 
    47     // used to adjust values between Windows and java epoch
    45     // used to adjust values between Windows and java epoch
    48     private static final long WINDOWS_EPOCH_IN_MICROSECONDS = -11644473600000000L;
    46     private static final long WINDOWS_EPOCH_IN_MICROSECONDS = -11644473600000000L;
   293 
   291 
   294     private static final long byteBufferArrayOffset = unsafe.objectFieldOffset(ByteBuffer.class, "hb");
   292     private static final long byteBufferArrayOffset = unsafe.objectFieldOffset(ByteBuffer.class, "hb");
   295     private static final long byteBufferOffsetOffset = unsafe.objectFieldOffset(ByteBuffer.class, "offset");
   293     private static final long byteBufferOffsetOffset = unsafe.objectFieldOffset(ByteBuffer.class, "offset");
   296 
   294 
   297     static byte[] getBufferArray(ByteBuffer byteBuffer) {
   295     static byte[] getBufferArray(ByteBuffer byteBuffer) {
   298         return (byte[]) unsafe.getObject(byteBuffer, byteBufferArrayOffset);
   296         return (byte[]) unsafe.getReference(byteBuffer, byteBufferArrayOffset);
   299     }
   297     }
   300 
   298 
   301     static int getBufferOffset(ByteBuffer byteBuffer) {
   299     static int getBufferOffset(ByteBuffer byteBuffer) {
   302         return unsafe.getInt(byteBuffer, byteBufferOffsetOffset);
   300         return unsafe.getInt(byteBuffer, byteBufferOffsetOffset);
   303     }
   301     }