package io.netty.util.internal;

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

/* JADX INFO: loaded from: classes.dex */
final class Cleaner0 {
    static final /* synthetic */ boolean $assertionsDisabled = false;
    private static final long CLEANER_FIELD_OFFSET;
    private static final Method CLEAN_METHOD;
    private static final InternalLogger logger = InternalLoggerFactory.getInstance((Class<?>) Cleaner0.class);

    static {
        long jObjectFieldOffset;
        ByteBuffer byteBufferAllocateDirect = ByteBuffer.allocateDirect(1);
        Method method = null;
        if (PlatformDependent0.hasUnsafe()) {
            try {
                Field declaredField = byteBufferAllocateDirect.getClass().getDeclaredField("cleaner");
                declaredField.setAccessible(true);
                Object obj = declaredField.get(byteBufferAllocateDirect);
                jObjectFieldOffset = PlatformDependent0.objectFieldOffset(declaredField);
                Method declaredMethod = obj.getClass().getDeclaredMethod("clean", new Class[0]);
                declaredMethod.invoke(obj, new Object[0]);
                method = declaredMethod;
            } catch (Throwable unused) {
                jObjectFieldOffset = -1;
            }
        } else {
            jObjectFieldOffset = -1;
        }
        logger.debug("java.nio.ByteBuffer.cleaner(): {}", jObjectFieldOffset != -1 ? "available" : "unavailable");
        CLEANER_FIELD_OFFSET = jObjectFieldOffset;
        CLEAN_METHOD = method;
        freeDirectBuffer(byteBufferAllocateDirect);
    }

    private Cleaner0() {
    }

    static void freeDirectBuffer(ByteBuffer byteBuffer) {
        long j = CLEANER_FIELD_OFFSET;
        if (j == -1 || !byteBuffer.isDirect()) {
            return;
        }
        try {
            Object object = PlatformDependent0.getObject(byteBuffer, j);
            if (object != null) {
                CLEAN_METHOD.invoke(object, new Object[0]);
            }
        } catch (Throwable unused) {
        }
    }
}
