From bc71e4a22b8d2b894a283f34974aeba11a28bb96 Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Wed, 23 Feb 2005 17:36:26 +0000 Subject: re PR libgcj/16923 (-D* Options passed to JNI_CreateJavaVM are ignored) 2005-02-23 Thomas Fitzsimmons PR libgcj/16923 * gcj.texi (Invocation): Add descriptions of JvVMInitArgs and JvVMOption. 2005-02-23 Thomas Fitzsimmons PR libgcj/16923 * jni.cc (JNI_CreateJavaVM): Check JNI version. Cast args to JvVMInitArgs. Pass args to _Jv_CreateJavaVM and check return value. Move argument parsing code to prims.cc. * prims.cc (no_properties): Remove. (_Jv_Compiler_Properties): Initialize to NULL. (_Jv_Properties_Count): Initialize to 0. (parse_verbose_args): New function. (parse_init_args): New function. (_Jv_CreateJavaVM): Call parse_init_args. (_Jv_RunMain): Check return value of _Jv_CreateJavaVM. * gcj/cni.h (JvVMOption): New struct. (JvVMInitArgs): Likewise. (JvCreateJavaVM): Declare vm_args as JvVMInitArgs* rather than void*. * libjava/gcj/javaprims.h (_Jv_VMOption): New struct. (_Jv_VMInitArgs): Likewise. * include/java-props.h (_Jv_Properties_Count): Declare. * java/lang/natRuntime.cc (insertSystemProperties): Use _Jv_Properties_Count in for loop exit condition. * testsuite/libjava.jni/jni.exp (gcj_invocation_compile_c_to_binary): New procedure. (gcj_invocation_test_one): Likewise. (gcj_jni_run): Run JNI invocation API tests. * testsuite/libjava.jni/invocation/PR16923.c, testsuite/libjava.jni/invocation/PR16923.java, testsuite/libjava.jni/invocation/PR16923.out: New test. From-SVN: r95459 --- libjava/gcj/cni.h | 6 +++++- libjava/gcj/javaprims.h | 25 ++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) (limited to 'libjava/gcj') diff --git a/libjava/gcj/cni.h b/libjava/gcj/cni.h index ee39738..4aea4b6 100644 --- a/libjava/gcj/cni.h +++ b/libjava/gcj/cni.h @@ -17,6 +17,7 @@ details. */ #include #include +#include #include @@ -113,8 +114,11 @@ JvFree (void *ptr) return _Jv_Free (ptr); } +typedef struct _Jv_VMOption JvVMOption; +typedef struct _Jv_VMInitArgs JvVMInitArgs; + extern inline jint -JvCreateJavaVM (void* vm_args) +JvCreateJavaVM (JvVMInitArgs* vm_args) { return _Jv_CreateJavaVM (vm_args); } diff --git a/libjava/gcj/javaprims.h b/libjava/gcj/javaprims.h index 53c26fe..e972f7b 100644 --- a/libjava/gcj/javaprims.h +++ b/libjava/gcj/javaprims.h @@ -487,7 +487,30 @@ extern "C" jsize _Jv_GetStringUTFLength (jstring); extern "C" jsize _Jv_GetStringUTFRegion (jstring, jsize, jsize, char *); extern "C" jint _Jv_hashUtf8String (char*, int); -extern jint _Jv_CreateJavaVM (void* /*vm_args*/); +struct _Jv_VMOption +{ + // a VM initialization option + char* optionString; + // extra information associated with this option + void* extraInfo; +}; + +struct _Jv_VMInitArgs +{ + // for compatibility with JavaVMInitArgs + jint version; + + // number of VM initialization options + jint nOptions; + + // an array of VM initialization options + struct _Jv_VMOption* options; + + // true if the option parser should ignore unrecognized options + jboolean ignoreUnrecognized; +}; + +extern jint _Jv_CreateJavaVM (struct _Jv_VMInitArgs*); void _Jv_ThreadRun (java::lang::Thread* thread); -- cgit v1.1