public final class org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper extends java.lang.Object
{
private static final java.lang.invoke.MethodHandle UNMAP;
private static final java.lang.RuntimeException UNMAP_NOT_SUPPORTED_EXCEPTION;
private void <init>()
{
org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper v;
v := @this: org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static void unmap(java.lang.String, java.nio.ByteBuffer) throws java.io.IOException
{
java.lang.Throwable v;
java.lang.invoke.MethodHandle v, v;
java.io.IOException v;
java.lang.RuntimeException v;
java.lang.IllegalArgumentException v;
java.nio.ByteBuffer v;
java.lang.String v, v;
boolean v;
v := @parameter: java.lang.String;
v := @parameter: java.nio.ByteBuffer;
v = virtualinvoke v.<java.nio.ByteBuffer: boolean isDirect()>();
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("Unmapping only works with direct buffers");
throw v;
label:
v = <org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper: java.lang.invoke.MethodHandle UNMAP>;
if v != null goto label;
v = <org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper: java.lang.RuntimeException UNMAP_NOT_SUPPORTED_EXCEPTION>;
throw v;
label:
v = <org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper: java.lang.invoke.MethodHandle UNMAP>;
virtualinvoke v.<java.lang.invoke.MethodHandle: void invokeExact(java.nio.ByteBuffer)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new java.io.IOException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Unable to unmap the mapped buffer: \u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private static java.lang.invoke.MethodHandle lookupUnmapMethodHandle()
{
java.lang.UnsupportedOperationException v;
java.lang.invoke.MethodHandle v, v;
java.lang.invoke.MethodHandles$Lookup v;
java.lang.Exception v;
boolean v;
v = staticinvoke <java.lang.invoke.MethodHandles: java.lang.invoke.MethodHandles$Lookup lookup()>();
label:
v = <org.apache.kafkaesqueesque.common.utils.Java: boolean IS_JAVA9_COMPATIBLE>;
if v == 0 goto label;
v = staticinvoke <org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper: java.lang.invoke.MethodHandle unmapJava9(java.lang.invoke.MethodHandles$Lookup)>(v);
label:
return v;
label:
v = staticinvoke <org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper: java.lang.invoke.MethodHandle unmapJava7Or8(java.lang.invoke.MethodHandles$Lookup)>(v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String,java.lang.Throwable)>("Unmapping is not supported on this platform, because internal Java APIs are not compatible with this Kafka version", v);
throw v;
catch java.lang.ReflectiveOperationException from label to label with label;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.ReflectiveOperationException from label to label with label;
catch java.lang.RuntimeException from label to label with label;
}
private static java.lang.invoke.MethodHandle unmapJava7Or8(java.lang.invoke.MethodHandles$Lookup) throws java.lang.ReflectiveOperationException
{
java.lang.invoke.MethodHandle v, v, v, v, v, v, v, v, v, v;
java.lang.reflect.Method v;
java.lang.invoke.MethodHandles$Lookup v;
java.lang.Class[] v, v;
java.lang.invoke.MethodType v, v, v, v, v, v;
java.lang.Class v, v, v, v, v, v, v;
v := @parameter: java.lang.invoke.MethodHandles$Lookup;
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String)>("java.nio.DirectByteBuffer");
v = newarray (java.lang.Class)[0];
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method getMethod(java.lang.String,java.lang.Class[])>("cleaner", v);
virtualinvoke v.<java.lang.reflect.Method: void setAccessible(boolean)>(1);
v = virtualinvoke v.<java.lang.invoke.MethodHandles$Lookup: java.lang.invoke.MethodHandle unreflect(java.lang.reflect.Method)>(v);
v = virtualinvoke v.<java.lang.invoke.MethodHandle: java.lang.invoke.MethodType type()>();
v = virtualinvoke v.<java.lang.invoke.MethodType: java.lang.Class returnType()>();
v = <java.lang.Void: java.lang.Class TYPE>;
v = staticinvoke <java.lang.invoke.MethodType: java.lang.invoke.MethodType methodType(java.lang.Class)>(v);
v = virtualinvoke v.<java.lang.invoke.MethodHandles$Lookup: java.lang.invoke.MethodHandle findVirtual(java.lang.Class,java.lang.String,java.lang.invoke.MethodType)>(v, "clean", v);
v = <java.lang.Boolean: java.lang.Class TYPE>;
v = staticinvoke <java.lang.invoke.MethodType: java.lang.invoke.MethodType methodType(java.lang.Class,java.lang.Class)>(v, class "Ljava/lang/Object;");
v = virtualinvoke v.<java.lang.invoke.MethodHandles$Lookup: java.lang.invoke.MethodHandle findStatic(java.lang.Class,java.lang.String,java.lang.invoke.MethodType)>(class "Lorg/apache/kafkaesqueesque/common/utils/ByteBufferUnmapper;", "nonNull", v);
v = <java.lang.Boolean: java.lang.Class TYPE>;
v = staticinvoke <java.lang.invoke.MethodType: java.lang.invoke.MethodType methodType(java.lang.Class,java.lang.Class)>(v, v);
v = virtualinvoke v.<java.lang.invoke.MethodHandle: java.lang.invoke.MethodHandle asType(java.lang.invoke.MethodType)>(v);
v = staticinvoke <java.lang.invoke.MethodHandles: java.lang.invoke.MethodHandle constant(java.lang.Class,java.lang.Object)>(class "Ljava/lang/Void;", null);
v = <java.lang.Void: java.lang.Class TYPE>;
v = staticinvoke <java.lang.invoke.MethodType: java.lang.invoke.MethodType methodType(java.lang.Class)>(v);
v = virtualinvoke v.<java.lang.invoke.MethodHandle: java.lang.invoke.MethodHandle asType(java.lang.invoke.MethodType)>(v);
v = newarray (java.lang.Class)[1];
v[0] = v;
v = staticinvoke <java.lang.invoke.MethodHandles: java.lang.invoke.MethodHandle dropArguments(java.lang.invoke.MethodHandle,int,java.lang.Class[])>(v, 0, v);
v = staticinvoke <java.lang.invoke.MethodHandles: java.lang.invoke.MethodHandle guardWithTest(java.lang.invoke.MethodHandle,java.lang.invoke.MethodHandle,java.lang.invoke.MethodHandle)>(v, v, v);
v = staticinvoke <java.lang.invoke.MethodHandles: java.lang.invoke.MethodHandle filterReturnValue(java.lang.invoke.MethodHandle,java.lang.invoke.MethodHandle)>(v, v);
v = <java.lang.Void: java.lang.Class TYPE>;
v = staticinvoke <java.lang.invoke.MethodType: java.lang.invoke.MethodType methodType(java.lang.Class,java.lang.Class)>(v, class "Ljava/nio/ByteBuffer;");
v = virtualinvoke v.<java.lang.invoke.MethodHandle: java.lang.invoke.MethodHandle asType(java.lang.invoke.MethodType)>(v);
return v;
}
private static java.lang.invoke.MethodHandle unmapJava9(java.lang.invoke.MethodHandles$Lookup) throws java.lang.ReflectiveOperationException
{
java.lang.invoke.MethodHandle v, v;
java.lang.invoke.MethodHandles$Lookup v;
java.lang.reflect.Field v;
java.lang.invoke.MethodType v;
java.lang.Class v, v;
java.lang.Object v;
v := @parameter: java.lang.invoke.MethodHandles$Lookup;
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String)>("sun.misc.Unsafe");
v = <java.lang.Void: java.lang.Class TYPE>;
v = staticinvoke <java.lang.invoke.MethodType: java.lang.invoke.MethodType methodType(java.lang.Class,java.lang.Class)>(v, class "Ljava/nio/ByteBuffer;");
v = virtualinvoke v.<java.lang.invoke.MethodHandles$Lookup: java.lang.invoke.MethodHandle findVirtual(java.lang.Class,java.lang.String,java.lang.invoke.MethodType)>(v, "invokeCleaner", v);
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getDeclaredField(java.lang.String)>("theUnsafe");
virtualinvoke v.<java.lang.reflect.Field: void setAccessible(boolean)>(1);
v = virtualinvoke v.<java.lang.reflect.Field: java.lang.Object get(java.lang.Object)>(null);
v = virtualinvoke v.<java.lang.invoke.MethodHandle: java.lang.invoke.MethodHandle bindTo(java.lang.Object)>(v);
return v;
}
private static boolean nonNull(java.lang.Object)
{
java.lang.Object v;
boolean v;
v := @parameter: java.lang.Object;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
static void <clinit>()
{
java.lang.invoke.MethodHandle v;
java.lang.RuntimeException v, v;
v = null;
v = null;
label:
v = staticinvoke <org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper: java.lang.invoke.MethodHandle lookupUnmapMethodHandle()>();
label:
goto label;
label:
v := @caughtexception;
v = v;
label:
if v == null goto label;
<org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper: java.lang.invoke.MethodHandle UNMAP> = v;
<org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper: java.lang.RuntimeException UNMAP_NOT_SUPPORTED_EXCEPTION> = null;
goto label;
label:
<org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper: java.lang.invoke.MethodHandle UNMAP> = null;
<org.apache.kafkaesqueesque.common.utils.ByteBufferUnmapper: java.lang.RuntimeException UNMAP_NOT_SUPPORTED_EXCEPTION> = v;
label:
return;
catch java.lang.RuntimeException from label to label with label;
}
}