Class JNIUtil

java.lang.Object
org.graalvm.jniutils.JNIUtil

public final class JNIUtil extends Object
Helpers for calling JNI functions.
  • Method Details

    • IsSameObject

      public static boolean IsSameObject(JNI.JNIEnv env, JNI.JObject ref1, JNI.JObject ref2)
    • DeleteLocalRef

      public static void DeleteLocalRef(JNI.JNIEnv env, JNI.JObject ref)
    • PushLocalFrame

      public static int PushLocalFrame(JNI.JNIEnv env, int capacity)
    • PopLocalFrame

      public static JNI.JObject PopLocalFrame(JNI.JNIEnv env, JNI.JObject result)
    • DefineClass

      public static JNI.JClass DefineClass(JNI.JNIEnv env, org.graalvm.nativeimage.c.type.CCharPointer name, JNI.JObject loader, org.graalvm.nativeimage.c.type.CCharPointer buf, int bufLen)
    • FindClass

      public static JNI.JClass FindClass(JNI.JNIEnv env, org.graalvm.nativeimage.c.type.CCharPointer name)
    • GetObjectClass

      public static JNI.JClass GetObjectClass(JNI.JNIEnv env, JNI.JObject object)
    • GetStaticMethodID

      public static JNI.JMethodID GetStaticMethodID(JNI.JNIEnv env, JNI.JClass clazz, org.graalvm.nativeimage.c.type.CCharPointer name, org.graalvm.nativeimage.c.type.CCharPointer sig)
    • GetMethodID

      public static JNI.JMethodID GetMethodID(JNI.JNIEnv env, JNI.JClass clazz, org.graalvm.nativeimage.c.type.CCharPointer name, org.graalvm.nativeimage.c.type.CCharPointer sig)
    • GetStaticFieldID

      public static JNI.JFieldID GetStaticFieldID(JNI.JNIEnv env, JNI.JClass clazz, org.graalvm.nativeimage.c.type.CCharPointer name, org.graalvm.nativeimage.c.type.CCharPointer sig)
    • GetFieldID

      public static JNI.JFieldID GetFieldID(JNI.JNIEnv env, JNI.JClass clazz, org.graalvm.nativeimage.c.type.CCharPointer name, org.graalvm.nativeimage.c.type.CCharPointer signature)
    • GetStaticObjectField

      public static JNI.JObject GetStaticObjectField(JNI.JNIEnv env, JNI.JClass clazz, JNI.JFieldID fieldID)
    • GetIntField

      public static int GetIntField(JNI.JNIEnv env, JNI.JObject object, JNI.JFieldID fieldID)
    • NewObjectArray

      public static JNI.JObjectArray NewObjectArray(JNI.JNIEnv env, int len, JNI.JClass componentClass, JNI.JObject initialElement)
    • NewBooleanArray

      public static JNI.JBooleanArray NewBooleanArray(JNI.JNIEnv env, int len)
    • NewByteArray

      public static JNI.JByteArray NewByteArray(JNI.JNIEnv env, int len)
    • NewCharArray

      public static JNI.JCharArray NewCharArray(JNI.JNIEnv env, int len)
    • NewShortArray

      public static JNI.JShortArray NewShortArray(JNI.JNIEnv env, int len)
    • NewIntArray

      public static JNI.JIntArray NewIntArray(JNI.JNIEnv env, int len)
    • NewLongArray

      public static JNI.JLongArray NewLongArray(JNI.JNIEnv env, int len)
    • NewFloatArray

      public static JNI.JFloatArray NewFloatArray(JNI.JNIEnv env, int len)
    • NewDoubleArray

      public static JNI.JDoubleArray NewDoubleArray(JNI.JNIEnv env, int len)
    • GetArrayLength

      public static int GetArrayLength(JNI.JNIEnv env, JNI.JArray array)
    • SetObjectArrayElement

      public static void SetObjectArrayElement(JNI.JNIEnv env, JNI.JObjectArray array, int index, JNI.JObject value)
    • GetObjectArrayElement

      public static JNI.JObject GetObjectArrayElement(JNI.JNIEnv env, JNI.JObjectArray array, int index)
    • GetBooleanArrayElements

      public static org.graalvm.nativeimage.c.type.CCharPointer GetBooleanArrayElements(JNI.JNIEnv env, JNI.JBooleanArray array, JNI.JValue isCopy)
    • GetByteArrayElements

      public static org.graalvm.nativeimage.c.type.CCharPointer GetByteArrayElements(JNI.JNIEnv env, JNI.JByteArray array, JNI.JValue isCopy)
    • GetCharArrayElements

      public static org.graalvm.nativeimage.c.type.CShortPointer GetCharArrayElements(JNI.JNIEnv env, JNI.JCharArray array, JNI.JValue isCopy)
    • GetShortArrayElements

      public static org.graalvm.nativeimage.c.type.CShortPointer GetShortArrayElements(JNI.JNIEnv env, JNI.JShortArray array, JNI.JValue isCopy)
    • GetIntArrayElements

      public static org.graalvm.nativeimage.c.type.CIntPointer GetIntArrayElements(JNI.JNIEnv env, JNI.JIntArray array, JNI.JValue isCopy)
    • GetLongArrayElements

      public static org.graalvm.nativeimage.c.type.CLongPointer GetLongArrayElements(JNI.JNIEnv env, JNI.JLongArray array, JNI.JValue isCopy)
    • GetFloatArrayElements

      public static org.graalvm.nativeimage.c.type.CFloatPointer GetFloatArrayElements(JNI.JNIEnv env, JNI.JFloatArray array, JNI.JValue isCopy)
    • GetDoubleArrayElements

      public static org.graalvm.nativeimage.c.type.CDoublePointer GetDoubleArrayElements(JNI.JNIEnv env, JNI.JDoubleArray array, JNI.JValue isCopy)
    • ReleaseBooleanArrayElements

      public static void ReleaseBooleanArrayElements(JNI.JNIEnv env, JNI.JBooleanArray array, org.graalvm.nativeimage.c.type.CCharPointer elems, int mode)
    • ReleaseByteArrayElements

      public static void ReleaseByteArrayElements(JNI.JNIEnv env, JNI.JByteArray array, org.graalvm.nativeimage.c.type.CCharPointer elems, int mode)
    • ReleaseCharArrayElements

      public static void ReleaseCharArrayElements(JNI.JNIEnv env, JNI.JCharArray array, org.graalvm.nativeimage.c.type.CShortPointer elems, int mode)
    • ReleaseShortArrayElements

      public static void ReleaseShortArrayElements(JNI.JNIEnv env, JNI.JShortArray array, org.graalvm.nativeimage.c.type.CShortPointer elems, int mode)
    • ReleaseIntArrayElements

      public static void ReleaseIntArrayElements(JNI.JNIEnv env, JNI.JIntArray array, org.graalvm.nativeimage.c.type.CIntPointer elems, int mode)
    • ReleaseLongArrayElements

      public static void ReleaseLongArrayElements(JNI.JNIEnv env, JNI.JLongArray array, org.graalvm.nativeimage.c.type.CLongPointer elems, int mode)
    • ReleaseFloatArrayElements

      public static void ReleaseFloatArrayElements(JNI.JNIEnv env, JNI.JFloatArray array, org.graalvm.nativeimage.c.type.CFloatPointer elems, int mode)
    • ReleaseDoubleArrayElements

      public static void ReleaseDoubleArrayElements(JNI.JNIEnv env, JNI.JDoubleArray array, org.graalvm.nativeimage.c.type.CDoublePointer elems, int mode)
    • GetBooleanArrayRegion

      public static void GetBooleanArrayRegion(JNI.JNIEnv env, JNI.JBooleanArray array, int offset, int len, org.graalvm.nativeimage.c.type.CCharPointer buff)
    • GetByteArrayRegion

      public static void GetByteArrayRegion(JNI.JNIEnv env, JNI.JByteArray array, int offset, int len, org.graalvm.nativeimage.c.type.CCharPointer buff)
    • GetCharArrayRegion

      public static void GetCharArrayRegion(JNI.JNIEnv env, JNI.JCharArray array, int offset, int len, org.graalvm.nativeimage.c.type.CShortPointer buff)
    • GetShortArrayRegion

      public static void GetShortArrayRegion(JNI.JNIEnv env, JNI.JShortArray array, int offset, int len, org.graalvm.nativeimage.c.type.CShortPointer buff)
    • GetIntArrayRegion

      public static void GetIntArrayRegion(JNI.JNIEnv env, JNI.JIntArray array, int offset, int len, org.graalvm.nativeimage.c.type.CIntPointer buff)
    • GetLongArrayRegion

      public static void GetLongArrayRegion(JNI.JNIEnv env, JNI.JLongArray array, int offset, int len, org.graalvm.nativeimage.c.type.CLongPointer buff)
    • GetFloatArrayRegion

      public static void GetFloatArrayRegion(JNI.JNIEnv env, JNI.JFloatArray array, int offset, int len, org.graalvm.nativeimage.c.type.CFloatPointer buff)
    • GetDoubleArrayRegion

      public static void GetDoubleArrayRegion(JNI.JNIEnv env, JNI.JDoubleArray array, int offset, int len, org.graalvm.nativeimage.c.type.CDoublePointer buff)
    • SetBooleanArrayRegion

      public static void SetBooleanArrayRegion(JNI.JNIEnv env, JNI.JBooleanArray array, int offset, int len, org.graalvm.nativeimage.c.type.CCharPointer buff)
    • SetByteArrayRegion

      public static void SetByteArrayRegion(JNI.JNIEnv env, JNI.JByteArray array, int offset, int len, org.graalvm.nativeimage.c.type.CCharPointer buff)
    • SetCharArrayRegion

      public static void SetCharArrayRegion(JNI.JNIEnv env, JNI.JCharArray array, int offset, int len, org.graalvm.nativeimage.c.type.CShortPointer buff)
    • SetShortArrayRegion

      public static void SetShortArrayRegion(JNI.JNIEnv env, JNI.JShortArray array, int offset, int len, org.graalvm.nativeimage.c.type.CShortPointer buff)
    • SetIntArrayRegion

      public static void SetIntArrayRegion(JNI.JNIEnv env, JNI.JIntArray array, int offset, int len, org.graalvm.nativeimage.c.type.CIntPointer buff)
    • SetLongArrayRegion

      public static void SetLongArrayRegion(JNI.JNIEnv env, JNI.JLongArray array, int offset, int len, org.graalvm.nativeimage.c.type.CLongPointer buff)
    • SetFloatArrayRegion

      public static void SetFloatArrayRegion(JNI.JNIEnv env, JNI.JFloatArray array, int offset, int len, org.graalvm.nativeimage.c.type.CFloatPointer buff)
    • SetDoubleArrayRegion

      public static void SetDoubleArrayRegion(JNI.JNIEnv env, JNI.JDoubleArray array, int offset, int len, org.graalvm.nativeimage.c.type.CDoublePointer buff)
    • GetJavaVM

      public static JNI.JavaVM GetJavaVM(JNI.JNIEnv env)
    • GetEnv

      public static JNI.JNIEnv GetEnv(JNI.JavaVM vm)
    • AttachCurrentThread

      public static JNI.JNIEnv AttachCurrentThread(JNI.JavaVM vm, JNI.JavaVMAttachArgs args)
    • AttachCurrentThreadAsDaemon

      public static JNI.JNIEnv AttachCurrentThreadAsDaemon(JNI.JavaVM vm, JNI.JavaVMAttachArgs args)
    • DetachCurrentThread

      public static boolean DetachCurrentThread(JNI.JavaVM vm)
    • Throw

      public static void Throw(JNI.JNIEnv env, JNI.JThrowable throwable)
    • ExceptionCheck

      public static boolean ExceptionCheck(JNI.JNIEnv env)
    • ExceptionClear

      public static void ExceptionClear(JNI.JNIEnv env)
    • ExceptionDescribe

      public static void ExceptionDescribe(JNI.JNIEnv env)
    • ExceptionOccurred

      public static JNI.JThrowable ExceptionOccurred(JNI.JNIEnv env)
    • NewGlobalRef

      public static <T extends JNI.JObject> T NewGlobalRef(JNI.JNIEnv env, T ref, String type)
      Creates a new global reference.
      Parameters:
      env - the JNIEnv
      ref - JObject to create JNI global reference for
      type - type of the object, used only for tracing to distinguish global references
      Returns:
      JNI global reference for given JNI.JObject
    • DeleteGlobalRef

      public static void DeleteGlobalRef(JNI.JNIEnv env, JNI.JObject ref)
    • NewWeakGlobalRef

      public static JNI.JWeak NewWeakGlobalRef(JNI.JNIEnv env, JNI.JObject ref, String type)
      Creates a new weak global reference.
      Parameters:
      env - the JNIEnv
      ref - JObject to create JNI weak global reference for
      type - type of the object, used only for tracing to distinguish global references
      Returns:
      JNI weak global reference for given JNI.JObject
    • NewLocalRef

      public static JNI.JObject NewLocalRef(JNI.JNIEnv env, JNI.JObject ref)
    • DeleteWeakGlobalRef

      public static void DeleteWeakGlobalRef(JNI.JNIEnv env, JNI.JWeak ref)
    • GetDirectBufferAddress

      public static org.graalvm.nativeimage.c.type.VoidPointer GetDirectBufferAddress(JNI.JNIEnv env, JNI.JObject buf)
    • IsInstanceOf

      public static boolean IsInstanceOf(JNI.JNIEnv env, JNI.JObject obj, JNI.JClass clazz)
    • createString

      public static String createString(JNI.JNIEnv env, JNI.JString hsString)
      Decodes a string in the HotSpot heap to a local String.
    • createHSString

      public static JNI.JString createHSString(JNI.JNIEnv env, String string)
      Creates a String in the HotSpot heap from string.
    • createArray

      public static boolean[] createArray(JNI.JNIEnv env, JNI.JBooleanArray booleanArray)
    • createHSArray

      public static JNI.JBooleanArray createHSArray(JNI.JNIEnv jniEnv, boolean[] a)
    • createArray

      public static byte[] createArray(JNI.JNIEnv env, JNI.JByteArray byteArray)
    • createHSArray

      public static JNI.JByteArray createHSArray(JNI.JNIEnv jniEnv, byte[] a)
    • createArray

      public static char[] createArray(JNI.JNIEnv env, JNI.JCharArray charArray)
    • createHSArray

      public static JNI.JCharArray createHSArray(JNI.JNIEnv jniEnv, char[] a)
    • createArray

      public static short[] createArray(JNI.JNIEnv env, JNI.JShortArray shortArray)
    • createHSArray

      public static JNI.JShortArray createHSArray(JNI.JNIEnv jniEnv, short[] a)
    • createArray

      public static int[] createArray(JNI.JNIEnv env, JNI.JIntArray intArray)
    • createHSArray

      public static JNI.JIntArray createHSArray(JNI.JNIEnv jniEnv, int[] a)
    • createArray

      public static long[] createArray(JNI.JNIEnv env, JNI.JLongArray longArray)
    • createHSArray

      public static JNI.JLongArray createHSArray(JNI.JNIEnv jniEnv, long[] a)
    • createArray

      public static float[] createArray(JNI.JNIEnv env, JNI.JFloatArray floatArray)
    • createHSArray

      public static JNI.JFloatArray createHSArray(JNI.JNIEnv jniEnv, float[] a)
    • createArray

      public static double[] createArray(JNI.JNIEnv env, JNI.JDoubleArray doubleArray)
    • createHSArray

      public static JNI.JDoubleArray createHSArray(JNI.JNIEnv jniEnv, double[] a)
    • createHSArray

      public static JNI.JObjectArray createHSArray(JNI.JNIEnv jniEnv, Object[] array, int sourcePosition, int length, String componentTypeBinaryName)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, JNI.JBooleanArray src, int srcPos, boolean[] dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, boolean[] src, int srcPos, JNI.JBooleanArray dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, JNI.JByteArray src, int srcPos, byte[] dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, byte[] src, int srcPos, JNI.JByteArray dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, JNI.JCharArray src, int srcPos, char[] dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, char[] src, int srcPos, JNI.JCharArray dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, JNI.JShortArray src, int srcPos, short[] dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, short[] src, int srcPos, JNI.JShortArray dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, JNI.JIntArray src, int srcPos, int[] dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, int[] src, int srcPos, JNI.JIntArray dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, JNI.JLongArray src, int srcPos, long[] dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, long[] src, int srcPos, JNI.JLongArray dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, JNI.JFloatArray src, int srcPos, float[] dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, float[] src, int srcPos, JNI.JFloatArray dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, JNI.JDoubleArray src, int srcPos, double[] dest, int destPos, int length)
    • arrayCopy

      public static void arrayCopy(JNI.JNIEnv jniEnv, double[] src, int srcPos, JNI.JDoubleArray dest, int destPos, int length)
    • getInternalName

      public static String getInternalName(String fqn)
      Converts a fully qualified Java class name from Java source format (e.g. "java.lang.getString") to internal format (e.g. "Ljava/lang/getString;".
    • getBinaryName

      public static String getBinaryName(String fqn)
      Converts a fully qualified Java class name from Java source format (e.g. "java.lang.getString") to binary format (e.g. "java/lang/getString".
    • encodeMethodSignature

      public static String encodeMethodSignature(Class<?> returnType, Class<?>... parameterTypes)
      Creates a JVM method signature as specified in the Sections 4.3.3 of the JVM Specification.
    • encodeFieldSignature

      public static String encodeFieldSignature(Class<?> type)
      Creates a JVM field signature as specified in the Sections 4.3.2 of the JVM Specification.
    • findClass

      public static JNI.JClass findClass(JNI.JNIEnv env, String binaryName)
      Returns a JNI.JClass for given binary name.
    • findClass

      public static JNI.JClass findClass(JNI.JNIEnv env, JNI.JObject classLoader, String binaryName)
      Finds a class in HotSpot heap using a given ClassLoader.
      Parameters:
      env - the JNIEnv
      binaryName - the class binary name
    • findClass

      public static JNI.JClass findClass(JNI.JNIEnv env, JNI.JObject classLoader, String binaryName, boolean required)
      Finds a class in HotSpot heap using JNI.
      Parameters:
      env - the JNIEnv
      classLoader - the class loader to find class in or NULL pointer.
      binaryName - the class binary name
      required - if true the JNIExceptionWrapper is thrown when the class is not found. If false the NULL pointer is returned when the class is not found.
    • getJVMCIClassLoader

      public static JNI.JObject getJVMCIClassLoader(JNI.JNIEnv env)
      Returns a ClassLoader used to load the compiler classes.
    • getClassLoader

      public static JNI.JObject getClassLoader(JNI.JNIEnv env, JNI.JClass clazz)
    • getSystemClassLoader

      public static JNI.JObject getSystemClassLoader(JNI.JNIEnv env)
    • findMethod

      public static JNI.JMethodID findMethod(JNI.JNIEnv env, JNI.JClass clazz, boolean staticMethod, String methodName, String methodSignature)
    • findField

      public static JNI.JFieldID findField(JNI.JNIEnv env, JNI.JClass clazz, boolean staticField, String fieldName, String fieldSignature)
    • attachCurrentThread

      public static JNI.JNIEnv attachCurrentThread(JNI.JavaVM vm, boolean daemon, String name, JNI.JObject threadGroup)
      Attaches the current C thread to a Java Thread.
      Parameters:
      vm - the JNI.JavaVM pointer.
      daemon - if true attaches the thread as a daemon thread.
      name - the name of the Java tread or null.
      threadGroup - the thread group to add the thread into or C NULL pointer.
      Returns:
      the current thread JNI.JNIEnv or C NULL pointer in case of error.
    • tracingAt

      public static boolean tracingAt(int level)
    • trace

      public static void trace(int level, String format, Object... args)
      Emits a trace line composed of format and args if the tracing level equal to or greater than level.
    • trace

      public static void trace(int level, Throwable throwable)