< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/util/UnsafeArrayTypeReader.java

Print this page

        

@@ -22,11 +22,12 @@
  */
 
 
 package org.graalvm.compiler.core.common.util;
 
-import static org.graalvm.compiler.core.common.util.UnsafeAccess.UNSAFE;
+import static org.graalvm.compiler.serviceprovider.GraalUnsafeAccess.getUnsafe;
+
 import sun.misc.Unsafe;
 
 /**
  * Provides low-level read access from a byte[] array for signed and unsigned values of size 1, 2,
  * 4, and 8 bytes.

@@ -39,10 +40,12 @@
  * architectures that support unaligned memory accesses; the value {@code false} is the safe
  * fallback that works on every hardware.
  */
 public abstract class UnsafeArrayTypeReader implements TypeReader {
 
+    private static final Unsafe UNSAFE = getUnsafe();
+
     public static int getS1(byte[] data, long byteIndex) {
         return UNSAFE.getByte(data, readOffset(data, byteIndex, Byte.BYTES));
     }
 
     public static int getU1(byte[] data, long byteIndex) {

@@ -140,10 +143,12 @@
         return getS4() & 0xFFFFFFFFL;
     }
 }
 
 final class UnalignedUnsafeArrayTypeReader extends UnsafeArrayTypeReader {
+    private static final Unsafe UNSAFE = getUnsafe();
+
     protected static int getS2(byte[] data, long byteIndex) {
         return UNSAFE.getShort(data, readOffset(data, byteIndex, Short.BYTES));
     }
 
     protected static int getS4(byte[] data, long byteIndex) {

@@ -179,10 +184,12 @@
         return result;
     }
 }
 
 class AlignedUnsafeArrayTypeReader extends UnsafeArrayTypeReader {
+    private static final Unsafe UNSAFE = getUnsafe();
+
     protected static int getS2(byte[] data, long byteIndex) {
         long offset = readOffset(data, byteIndex, Short.BYTES);
         return ((UNSAFE.getByte(data, offset + 0) & 0xFF) << 0) | //
                         (UNSAFE.getByte(data, offset + 1) << 8);
     }
< prev index next >