jamvm
changeset 401:3ca4c2fbbd7f
Handle difference between StackTraceElement constructors.
2008-08-04 Andrew John Hughes <gnu_andrew@member.fsf.org>
* configure.ac: Credit CACAO for
--with-java-runtime-library macro.
* src/excep.c,
* src/symbol.h:
Handle differing signature of StackTraceElement
constructor.
2008-08-04 Andrew John Hughes <gnu_andrew@member.fsf.org>
* configure.ac: Credit CACAO for
--with-java-runtime-library macro.
* src/excep.c,
* src/symbol.h:
Handle differing signature of StackTraceElement
constructor.
| author | andrew |
|---|---|
| date | Tue Aug 05 05:16:11 2008 +0100 (2008-08-05) |
| parents | 5baaa2bcac6b |
| children | 24373fc1d951 |
| files | ChangeLog configure.ac src/excep.c src/symbol.h |
line diff
1.1 --- a/ChangeLog Tue Aug 05 04:48:38 2008 +0100 1.2 +++ b/ChangeLog Tue Aug 05 05:16:11 2008 +0100 1.3 @@ -5,6 +5,15 @@ 1.4 ============== 1.5 2008-08-04 Andrew John Hughes <gnu_andrew@member.fsf.org> 1.6 1.7 + * configure.ac: Credit CACAO for 1.8 + --with-java-runtime-library macro. 1.9 + * src/excep.c, 1.10 + * src/symbol.h: 1.11 + Handle differing signature of StackTraceElement 1.12 + constructor. 1.13 + 1.14 +2008-08-04 Andrew John Hughes <gnu_andrew@member.fsf.org> 1.15 + 1.16 * configure.ac: 1.17 Add --with-java-runtime-library from CACAO and 1.18 change --with-classpath-install-dir to
2.1 --- a/configure.ac Tue Aug 05 04:48:38 2008 +0100 2.2 +++ b/configure.ac Tue Aug 05 05:16:11 2008 +0100 2.3 @@ -193,6 +193,8 @@ 2.4 enable_ffi=no 2.5 fi]) 2.6 2.7 +dnl Based on the AC_CHECK_WITH_JAVA_RUNTIME_LIBRARY function 2.8 +dnl found in CACAO's m4/java-runtime-library.m4. 2.9 AC_MSG_CHECKING(which Java runtime library to use) 2.10 AC_ARG_WITH([java-runtime-library], 2.11 [AS_HELP_STRING(--with-java-runtime-library=<type>,specifies which type of classpath to use as Java runtime library (classpath,openjdk) [[default=classpath]])],
3.1 --- a/src/excep.c Tue Aug 05 04:48:38 2008 +0100 3.2 +++ b/src/excep.c Tue Aug 05 05:16:11 2008 +0100 3.3 @@ -46,9 +46,16 @@ 3.4 vmthrow_class = findSystemClass0(SYMBOL(java_lang_VMThrowable)); 3.5 throw_class = findSystemClass0(SYMBOL(java_lang_Throwable)); 3.6 bcktrce = findField(vmthrow_class, SYMBOL(backtrace), SYMBOL(sig_java_lang_Object)); 3.7 + /* VMDIFF 3.8 + GNU Classpath variant uses additional package-private constructor which allows 3.9 + isNative to be specified, and changes the ordering. 3.10 + */ 3.11 vmthrow_init_mb = findMethod(ste_class, SYMBOL(object_init), 3.12 +#ifdef WITH_JAVA_RUNTIME_LIBRARY_CLASSPATH 3.13 SYMBOL(_java_lang_String_I_java_lang_String_java_lang_String_Z__V)); 3.14 - 3.15 +#elif WITH_JAVA_RUNTIME_LIBRARY_OPENJDK 3.16 + SYMBOL(_java_lang_String_java_lang_String_java_lang_String_I__V)); 3.17 +#endif 3.18 if((bcktrce == NULL) || (vmthrow_init_mb == NULL)) { 3.19 jam_fprintf(stderr, "Error initialising VM (initialiseException)\n"); 3.20 exitVM(1); 3.21 @@ -304,8 +311,15 @@ 3.22 if(exceptionOccurred()) 3.23 return NULL; 3.24 3.25 +/* VMDIFF: Arguments vary between libraries 3.26 + Note: OpenJDK simply uses -2 to indicate a native method. */ 3.27 +#ifdef WITH_JAVA_RUNTIME_LIBRARY_CLASSPATH 3.28 executeMethod(ste, vmthrow_init_mb, filename, isNative ? -1 : mapPC2LineNo(mb, pc), 3.29 classname, methodname, isNative); 3.30 +#elif WITH_JAVA_RUNTIME_LIBRARY_OPENJDK 3.31 + executeMethod(ste, vmthrow_init_mb, classname, methodname, filename, 3.32 + isNative ? -1 : mapPC2LineNo(mb, pc)); 3.33 +#endif 3.34 3.35 if(exceptionOccurred()) 3.36 return NULL;
4.1 --- a/src/symbol.h Tue Aug 05 04:48:38 2008 +0100 4.2 +++ b/src/symbol.h Tue Aug 05 05:16:11 2008 +0100 4.3 @@ -214,8 +214,13 @@ 4.4 "(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;I)V"), \ 4.5 action(_java_lang_Object_java_lang_Object__java_lang_Object, \ 4.6 "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"), \ 4.7 +#ifdef WITH_JAVA_RUNTIME_LIBRARY_CLASSPATH 4.8 action(_java_lang_String_I_java_lang_String_java_lang_String_Z__V, \ 4.9 "(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Z)V"), \ 4.10 +#elif WITH_JAVA_RUNTIME_LIBRARY_OPENJDK 4.11 + action(_java_lang_String_java_lang_String_java_lang_String_I__V, \ 4.12 + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V"), \ 4.13 +#endif 4.14 action(_java_lang_Class_array_java_lang_Class_array_java_lang_Class_I__V, \ 4.15 "(Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;I)V"), \ 4.16 action(_java_lang_String__java_lang_Class, "(Ljava/lang/String;)Ljava/lang/Class;"), \
