package org.deephacks.confit.internal.cached;
import sun.misc.Unsafe;
import java.lang.reflect.Field;
public class UnsafeUtils {
private static Unsafe unsafe;
static {
try {
Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe");
unsafeField.setAccessible(true);
unsafe = (Unsafe) unsafeField.get(null);
// Ensure the unsafe supports list necessary methods to work around the mistake in the latest OpenJDK.
// https://github.com/netty/netty/issues/1061
// http://www.mail-archive.com/jdk6-dev@openjdk.java.net/msg00698.html
try {
unsafe.getClass().getDeclaredMethod(
"copyMemory",
new Class[] { Object.class, long.class, Object.class, long.class, long.class });
} catch (NoSuchMethodError t) {
throw t;
}
} catch (Throwable cause) {
unsafe = null;
}
}
public static Unsafe getUnsafe() {
return unsafe;
}
}