package org.infinispan.container.offheap;
import org.infinispan.util.logging.Log;
import org.infinispan.util.logging.LogFactory;
import sun.misc.Unsafe;
/**
* Simple wrapper around Unsafe to provide for trace messages for method calls.
* @author wburns
* @since 9.0
*/
public class UnsafeWrapper {
protected static final Log log = LogFactory.getLog(UnsafeWrapper.class);
protected static final boolean trace = log.isTraceEnabled();
protected static final Unsafe UNSAFE = UnsafeHolder.UNSAFE;
static final UnsafeWrapper INSTANCE = new UnsafeWrapper();
private UnsafeWrapper() { }
public void putLong(long var1, long var3) {
if (trace) {
log.tracef("Wrote long value %d to address %d", var3, var1);
}
UNSAFE.putLong(var1, var3);
}
public void putInt(long var1, int var3) {
if (trace) {
log.tracef("Wrote int value %d to address %d", var3, var1);
}
UNSAFE.putInt(var1, var3);
}
public long getLong(long var1) {
long var3 = UNSAFE.getLong(var1);
if (trace) {
log.tracef("Retrieved long value %d from address %d", var3, var1);
}
return var3;
}
public int getInt(long var1) {
int var3 = UNSAFE.getInt(var1);
if (trace) {
log.tracef("Retrieved int value %d from address %d", var3, var1);
}
return var3;
}
public int arrayBaseOffset(Class<?> var1) {
return UNSAFE.arrayBaseOffset(var1);
}
public void copyMemory(Object var1, long var2, Object var4, long var5, long var7) {
if (trace) {
log.tracef("Copying memory of object %s offset by %d to %s offset by %d with a total of %d bytes", var1, var2, var4, var5, var7);
}
UNSAFE.copyMemory(var1, var2, var4, var5, var7);
}
}