package io.netty.util.internal;

import io.netty.util.internal.logging.InternalLogger;
import io.netty.util.internal.logging.InternalLoggerFactory;
import java.lang.reflect.Method;
import java.nio.ByteBuffer;

/* JADX INFO: loaded from: classes.dex */
public final class CleanerJava6 implements Cleaner {
    private static final long CLEANER_FIELD_OFFSET;
    private static final Method CLEAN_METHOD;
    private static final InternalLogger logger = InternalLoggerFactory.getInstance((Class<?>) CleanerJava6.class);

    static {
        UnsupportedOperationException th;
        long j2 = -1;
        Method method = null;
        if (PlatformDependent0.hasUnsafe()) {
            ByteBuffer byteBufferAllocateDirect = ByteBuffer.allocateDirect(1);
            try {
                long jObjectFieldOffset = PlatformDependent0.objectFieldOffset(byteBufferAllocateDirect.getClass().getDeclaredField("cleaner"));
                Object object = PlatformDependent0.getObject(byteBufferAllocateDirect, jObjectFieldOffset);
                Method declaredMethod = object.getClass().getDeclaredMethod("clean", new Class[0]);
                declaredMethod.invoke(object, new Object[0]);
                th = null;
                j2 = jObjectFieldOffset;
                method = declaredMethod;
            } catch (Throwable th2) {
                th = th2;
            }
        } else {
            th = new UnsupportedOperationException("sun.misc.Unsafe unavailable");
        }
        if (th == null) {
            logger.debug("java.nio.ByteBuffer.cleaner(): available");
        } else {
            logger.debug("java.nio.ByteBuffer.cleaner(): unavailable", (Throwable) th);
        }
        CLEANER_FIELD_OFFSET = j2;
        CLEAN_METHOD = method;
    }

    public static boolean isSupported() {
        return CLEANER_FIELD_OFFSET != -1;
    }

    @Override // io.netty.util.internal.Cleaner
    public void freeDirectBuffer(ByteBuffer byteBuffer) {
        if (byteBuffer.isDirect()) {
            try {
                Object object = PlatformDependent0.getObject(byteBuffer, CLEANER_FIELD_OFFSET);
                if (object != null) {
                    CLEAN_METHOD.invoke(object, new Object[0]);
                }
            } catch (Throwable th) {
                PlatformDependent0.throwException(th);
            }
        }
    }
}
