
* testsuite/libjava.jni/register2.java: New file. * testsuite/libjava.jni/register2.out: New file. * testsuite/libjava.jni/register2.c: New file. * java/lang/natClass.cc (_Jv_GetClassNameUtf8): New function. * java/lang/Class.h (_Jv_GetClassNameUtf8): Declare. * jni.cc (struct NativeMethodCacheEntry): New struct. (nathash): Changed type. (hash): Updated. (nathash_find_slot): Likewise. (nathash_find): Likewise. (natrehash): Likewise. (nathash_add): Likewise. (_Jv_JNI_RegisterNatives): Likewise. (_Jv_LookupJNIMethod): Likewise. Idea from Juerg Lehni <juerg@scratchdisk.com> Co-Authored-By: Bryce McKinlay <mckinlay@redhat.com> From-SVN: r117867
48 lines
882 B
C
48 lines
882 B
C
#include <stdlib.h>
|
|
#include <assert.h>
|
|
#include <register2.h>
|
|
|
|
static int
|
|
twentythree (JNIEnv *env, jclass k)
|
|
{
|
|
return 23;
|
|
}
|
|
|
|
static int
|
|
oneninetyseven (JNIEnv *env, jclass k)
|
|
{
|
|
return 197;
|
|
}
|
|
|
|
JNIEXPORT jint JNICALL
|
|
JNI_OnLoad (JavaVM *vm, void *nothing)
|
|
{
|
|
JNIEnv *env;
|
|
JNINativeMethod meth;
|
|
jclass k;
|
|
jint r;
|
|
|
|
r = (*vm)->GetEnv (vm, (void **) &env, JNI_VERSION_1_2);
|
|
assert (r == JNI_OK);
|
|
k = (*env)->FindClass (env, "register2$I1");
|
|
assert (k != NULL);
|
|
|
|
meth.name = "doit";
|
|
meth.signature = "()I";
|
|
meth.fnPtr = twentythree;
|
|
|
|
r = (*env)->RegisterNatives (env, k, &meth, 1);
|
|
assert (r == JNI_OK);
|
|
|
|
k = (*env)->FindClass (env, "register2$I2");
|
|
assert (k != NULL);
|
|
|
|
meth.name = "doit";
|
|
meth.signature = "()I";
|
|
meth.fnPtr = oneninetyseven;
|
|
|
|
r = (*env)->RegisterNatives (env, k, &meth, 1);
|
|
assert (r == JNI_OK);
|
|
|
|
return JNI_VERSION_1_2;
|
|
}
|