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.
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;"), \