Merged revisions 8299-8320 via svnmerge from
authormichi <none@none>
Thu, 16 Aug 2007 11:37:25 +0000 (11:37 +0000)
committermichi <none@none>
Thu, 16 Aug 2007 11:37:25 +0000 (11:37 +0000)
svn+ssh://michi@c1.complang.tuwien.ac.at/ahome/cacao/svn/cacao/trunk

........
  r8300 | michi | 2007-08-13 12:23:20 +0200 (Mon, 13 Aug 2007) | 2 lines

  * src/native/localref.c (localref_table_remove): Fixed assertion.
........
  r8301 | twisti | 2007-08-13 15:34:12 +0200 (Mon, 13 Aug 2007) | 5 lines

  * configure.ac (dl): Check for dl before all other stuff.
  (AC_CHECK_ENABLE_LIBJVM): Added.

  * m4/libjvm.m4: New file.
........
  r8303 | twisti | 2007-08-13 21:01:52 +0200 (Mon, 13 Aug 2007) | 2 lines

  * src/vm/exceptions.c (exceptions_print_exception): Fixed typo.
........
  r8304 | pm | 2007-08-14 21:57:20 +0200 (Tue, 14 Aug 2007) | 9 lines

  * src/threads/none/threads.h [!defined(NDEBUG)] (_no_threads_tracejavacallindent, _no_threads_tracejavacallcount, TRACEJAVACALLINDENT, TRACEJAVACALLCOUNT): added.
  * src/threads/native/threads.h [!defined(NDEBUG)] (threadinfo): Added tracejavacallindent, tracejavacallcount members. (TRACEJAVACALLINDENT, TRACEJAVACALLCOUNT): added.
  * src/threads/native/threads.c: Likewise.
  * src/vm/jit/trace.h New file.
  * src/vm/jit/trace.c: Likewise.
  * src/vm/jit/Makefile.am (libjit_la_SOURCES): added trace.h and trace.c.
  * src/vm/jit/s390/emit.c (emit_verbosecall_enter): adpated to use trace_java_call_enter, (emit_verbosecall_exit): adapted to use trace_java_call_exit.
........
  r8305 | panzi | 2007-08-15 15:49:26 +0200 (Wed, 15 Aug 2007) | 34 lines

  * src/native/vm/java_lang_Class.c
  (_Jv_java_lang_Class_getDeclaredAnnotations): Use LLNI_* macro.

  * src/native/vm/gnu/java_lang_reflect_Method.c
  (Java_java_lang_reflect_Method_getDefaultValue): Use LLNI_* macros.
  (Java_java_lang_reflect_Method_declaredAnnotations): Use LLNI_* macros.
  (Java_java_lang_reflect_Method_getParameterAnnotations): Use LLNI_* macros.

  * src/native/vm/gnu/java_lang_reflect_Field.c
  (Java_java_lang_reflect_Field_declaredAnnotations): Use LLNI_* macros.

  * src/native/vm/gnu/java_lang_reflect_Constructor.c
  (Java_java_lang_reflect_Constructor_declaredAnnotations): Use LLNI_* macros.
  (Java_java_lang_reflect_Constructor_getParameterAnnotations): Use LLNI_* macros.

  * src/native/vm/sun/jvm.c
  (native/llni.h): Added include.
  (JVM_GetFieldAnnotations): Use LLNI_* macros.
  (JVM_GetMethodAnnotations): Use LLNI_* macros.
  (JVM_GetMethodDefaultAnnotationValue): Use LLNI_* macros.
  (JVM_GetMethodParameterAnnotations): Use LLNI_* macros.
  (JVM_GetClassConstantPool): Use LLNI_* macros.

  * src/native/vm/reflect.c
  (reflect_constructor_new): Forgot to set annotations and parameterAnnotations
  attributes for GNU Classpath.
  (reflect_get_declaredannotatios): Use LLNI_* macros.
  (reflect_get_parameterannotations): Use LLNI_* macros.

  * src/native/vm/reflect.h
  (reflect_get_declaredannotatios): Now the caller has to set the
  declaredAnnotations attribute of the according object itself, because the
  LLNI_* macros can't get the address of an field.
........
  r8306 | twisti | 2007-08-15 16:47:11 +0200 (Wed, 15 Aug 2007) | 5 lines

  * src/vm/signal.c (signal_init): Cast to functionptr to fix warnings.
  (signal_register_signal): Changed signature.

  * src/vm/signallocal.h (signal_register_signal): Likewise.
........
  r8307 | twisti | 2007-08-15 17:20:47 +0200 (Wed, 15 Aug 2007) | 7 lines

  * src/vmcore/class.c (class_get_interfaces): New function.
  * src/vmcore/class.h (class_get_interfaces): Likewise.

  * src/native/vm/java_lang_Class.c (getSuperclass): Cast return value.
  (getInterfaces): Use class_get_interfaces.
  * src/native/vm/sun/jvm.c (JVM_GetClassInterfaces): Likewise.
........
  r8308 | pm | 2007-08-15 18:03:28 +0200 (Wed, 15 Aug 2007) | 2 lines

  * src/native/vm/sun/jvm.c (JVM_Available) [FIONREAD]: Argument to ioctl is int *.
........
  r8309 | twisti | 2007-08-15 18:42:52 +0200 (Wed, 15 Aug 2007) | 10 lines

  * src/vmcore/class.c (vm/builtin.h): Added.
  (class_get_declaredclasses): New function.

  * src/vmcore/class.h (class_get_declaredclasses): Likewise.

  * src/native/vm/java_lang_Class.c (getDeclaredClasses): Use
  class_get_declaredclasses.

  * src/native/vm/sun/jvm.c (JVM_GetDeclaredClasses): Likewise.
........
  r8310 | twisti | 2007-08-15 18:49:03 +0200 (Wed, 15 Aug 2007) | 3 lines

  * src/native/vm/sun/jvm.c (JVM_GetClassInterfaces): Bugfix, forgot to
  set c.
........
  r8311 | panzi | 2007-08-15 19:03:40 +0200 (Wed, 15 Aug 2007) | 20 lines

  * src/native/vm/java_lang_Class.c
  [WITH_CLASSPATH_GNU] [ENABLE_ANNOTATIONS] (vm/vm.h): Added include.

  * src/native/vm/gnu/sun_reflect_ConstantPool.c
  (vm/stringlocal.h): Added include.
  (Java_sun_reflect_ConstantPool_getClassAtIfLoaded0): Removed wrong call of
  the macro TRACEJVMCALLS.

  * src/native/vm/gnu/java_lang_reflect_Method.c
  (Java_java_lang_reflect_Method_getDefaultValue): Added proper casts so
  gcc don't give me warnings.

  * src/native/vm/gnu/java_lang_reflect_Constructor.c
  [ENABLE_ANNOTATIONS] (vm/exceptions.h): Added include.

  * src/native/vm/sun/jvm.c
  (JVM_ConstantPoolGetStringAt): Corrected cast.
  (JVM_ConstantPoolGetUTF8At): Corrected cast.
  (JVM_GetArrayElement): Using primitive_box_* functions.
........
  r8312 | twisti | 2007-08-16 00:10:22 +0200 (Thu, 16 Aug 2007) | 2 lines

  * src/native/jni.c (native/localref.h): Added.
........
  r8313 | twisti | 2007-08-16 00:11:35 +0200 (Thu, 16 Aug 2007) | 4 lines

  * src/native/localref.c: Added Id keyword.
  * src/native/localref.h: Likewise.
  * src/native/llni.h: Likewise.
........
  r8314 | twisti | 2007-08-16 00:18:44 +0200 (Thu, 16 Aug 2007) | 2 lines

  * src/vm/jit/codegen-common.c (native/localref.h): Added.
........
  r8315 | panzi | 2007-08-16 00:49:20 +0200 (Thu, 16 Aug 2007) | 28 lines

  * src/native/vm/reflect.c
  (reflect_constructor_new): Allocation of the java_bytearray is now done in the
  method_get_* functions.
  (reflect_field_new): Allocation of the java_bytearray is now done in the
  field_get_* functions.
  (reflect_method_new): Allocation of the java_bytearray is now done in the
  method_get_* functions. Added use of LLNI_field_* macros.

  * src/vmcore/method.c
  (method_get_annotations): Do allocation of the java_bytearray here.
  (method_get_parameterannotations): Do allocation of the java_bytearray here.
  (method_get_annotationdefault): Do allocation of the java_bytearray here.

  * src/vmcore/method.h
  (method_get_annotations): This function now returns java_bytearray*.
  (method_get_parameterannotations): This function now returns java_bytearray*.
  (method_get_annotationdefault): This function now returns java_bytearray*.

  * src/vmcore/field.c
  (vm/builtin.h): Added include.
  (field_get_annotations): Do allocation of the java_bytearray here.

  * src/vmcore/field.h
  (field_get_annotations): This function now returns java_bytearray*.

  * src/cacaoh/dummy.c
  (builtin_newarray_byte): Added.
........
  r8316 | ajordan | 2007-08-16 01:32:57 +0200 (Thu, 16 Aug 2007) | 6 lines

  * src/vm/jit/sparc64/codegen.h: Added M_SAVE_REG and 13-bit overflow checking.

  * src/vm/jit/sparc64/codegen.c (codegen_emit): Fixed stack increasing for
  large stackframe sizes.
  (check_13bit_imm): Added for overflow checking.
........
  r8317 | pm | 2007-08-16 08:53:26 +0200 (Thu, 16 Aug 2007) | 2 lines

   * src/vm/jit/trace (_array_load_param) [SIZEOF_VOID_P == 8]: Bugfix, forgotten obsolete stack_offset.
........
  r8318 | michi | 2007-08-16 12:05:34 +0200 (Thu, 16 Aug 2007) | 70 lines

  * src/native/llni.h: Added macros for array handling.

  * src/vm/global.h: Added typedefs for array handles. Renamed array types.

  Use LLNI macros for array access and adapted to above changes:
  * src/vm/access.c
  * src/vm/jit/arm/emit.c
  * src/vm/jit/arm/codegen.c
  * src/vm/jit/powerpc/emit.c
  * src/vm/jit/powerpc/codegen.c
  * src/vm/jit/sparc64/emit.c
  * src/vm/jit/sparc64/codegen.c
  * src/vm/jit/alpha/emit.c
  * src/vm/jit/alpha/codegen.c
  * src/vm/jit/s390/emit.c
  * src/vm/jit/s390/codegen.c
  * src/vm/jit/mips/emit.c
  * src/vm/jit/mips/codegen.c
  * src/vm/jit/m68k/emit.c
  * src/vm/jit/m68k/codegen.c
  * src/vm/jit/powerpc64/emit.c
  * src/vm/jit/powerpc64/codegen.c
  * src/vm/jit/i386/emit.c
  * src/vm/jit/i386/codegen.c
  * src/vm/jit/x86_64/emit.c
  * src/vm/jit/x86_64/codegen.c
  * src/vm/jit/stacktrace.c
  * src/vm/jit/stacktrace.h
  * src/vm/builtin.c
  * src/vm/string.c
  * src/vm/builtin.h
  * src/vm/exceptions.c
  * src/vm/vm.c
  * src/vm/stringlocal.h
  * src/vm/vm.h
  * src/native/jni.c
  * src/native/vm/java_lang_ClassLoader.c
  * src/native/vm/java_lang_reflect_Constructor.h
  * src/native/vm/java_lang_ClassLoader.h
  * src/native/vm/java_lang_Class.c
  * src/native/vm/gnu/gnu_java_lang_management_VMThreadMXBeanImpl.c
  * src/native/vm/gnu/java_security_VMAccessController.c
  * src/native/vm/gnu/java_lang_VMClassLoader.c
  * src/native/vm/gnu/java_lang_management_VMManagementFactory.c
  * src/native/vm/gnu/java_lang_VMClass.c
  * src/native/vm/gnu/gnu_java_lang_management_VMRuntimeMXBeanImpl.c
  * src/native/vm/gnu/sun_reflect_ConstantPool.c
  * src/native/vm/gnu/java_lang_reflect_Method.c
  * src/native/vm/gnu/gnu_classpath_VMStackWalker.c
  * src/native/vm/gnu/java_lang_VMSystem.c
  * src/native/vm/gnu/java_lang_reflect_Constructor.c
  * src/native/vm/gnu/java_lang_VMThrowable.c
  * src/native/vm/java_lang_Class.h
  * src/native/vm/sun_misc_Unsafe.c
  * src/native/vm/sun/jvm.c
  * src/native/vm/reflect.c
  * src/native/vm/java_lang_reflect_Method.c
  * src/native/vm/reflect.h
  * src/native/vm/java_lang_reflect_Constructor.c
  * src/native/vm/java_lang_reflect_Method.h
  * src/native/jni.h
  * src/vmcore/class.c
  * src/vmcore/class.h
  * src/vmcore/method.c
  * src/vmcore/method.h
  * src/vmcore/linker.c
  * src/cacaoh/headers.h
  * src/cacaoh/dummy.c
  * src/cacaoh/headers.c
........
  r8319 | michi | 2007-08-16 12:43:43 +0200 (Thu, 16 Aug 2007) | 5 lines

  * src/native/vm/java_lang_Class.c
  (_Jv_java_lang_Class_getDeclaredFields): Fixed postincrement of array index.
  (_Jv_java_lang_Class_getDeclaredMethods): Likewise.
  (_Jv_java_lang_Class_getDeclaredConstructors): Likewise.
........
  r8320 | michi | 2007-08-16 13:35:14 +0200 (Thu, 16 Aug 2007) | 4 lines

  * src/vm/jit/allocator/simplereg.c (simplereg_free): Index into memcopycount
  is divided by SIZE_OF_STACKSLOT now.
  (simplereg_allocate_temporaries): Likewise.
........

--HG--
branch : exact-gc

73 files changed:
configure.ac
src/cacaoh/dummy.c
src/cacaoh/headers.c
src/cacaoh/headers.h
src/native/jni.c
src/native/jni.h
src/native/localref.c
src/native/vm/gnu/gnu_classpath_VMStackWalker.c
src/native/vm/gnu/gnu_java_lang_management_VMRuntimeMXBeanImpl.c
src/native/vm/gnu/gnu_java_lang_management_VMThreadMXBeanImpl.c
src/native/vm/gnu/java_lang_VMClass.c
src/native/vm/gnu/java_lang_VMClassLoader.c
src/native/vm/gnu/java_lang_VMSystem.c
src/native/vm/gnu/java_lang_VMThrowable.c
src/native/vm/gnu/java_lang_management_VMManagementFactory.c
src/native/vm/gnu/java_lang_reflect_Constructor.c
src/native/vm/gnu/java_lang_reflect_Field.c
src/native/vm/gnu/java_lang_reflect_Method.c
src/native/vm/gnu/java_security_VMAccessController.c
src/native/vm/java_lang_Class.c
src/native/vm/java_lang_Class.h
src/native/vm/java_lang_ClassLoader.c
src/native/vm/java_lang_ClassLoader.h
src/native/vm/java_lang_reflect_Method.c
src/native/vm/java_lang_reflect_Method.h
src/native/vm/sun_misc_Unsafe.c
src/threads/native/threads.c
src/threads/native/threads.h
src/threads/none/threads.h
src/vm/access.c
src/vm/builtin.c
src/vm/builtin.h
src/vm/exceptions.c
src/vm/global.h
src/vm/jit/Makefile.am
src/vm/jit/allocator/simplereg.c
src/vm/jit/alpha/codegen.c
src/vm/jit/alpha/emit.c
src/vm/jit/arm/codegen.c
src/vm/jit/arm/emit.c
src/vm/jit/codegen-common.c
src/vm/jit/i386/codegen.c
src/vm/jit/i386/emit.c
src/vm/jit/m68k/codegen.c
src/vm/jit/m68k/emit.c
src/vm/jit/mips/codegen.c
src/vm/jit/mips/emit.c
src/vm/jit/powerpc/codegen.c
src/vm/jit/powerpc/emit.c
src/vm/jit/powerpc64/codegen.c
src/vm/jit/powerpc64/emit.c
src/vm/jit/s390/codegen.c
src/vm/jit/s390/emit.c
src/vm/jit/sparc64/codegen.c
src/vm/jit/sparc64/codegen.h
src/vm/jit/sparc64/emit.c
src/vm/jit/stacktrace.c
src/vm/jit/stacktrace.h
src/vm/jit/x86_64/codegen.c
src/vm/jit/x86_64/emit.c
src/vm/signal.c
src/vm/signallocal.h
src/vm/string.c
src/vm/stringlocal.h
src/vm/vm.c
src/vm/vm.h
src/vmcore/class.c
src/vmcore/class.h
src/vmcore/field.c
src/vmcore/field.h
src/vmcore/linker.c
src/vmcore/method.c
src/vmcore/method.h

index 0b614aaa4f7f84ed6e17ec110970a453e9c2bdd8..74312f04a8e72afb36a156b213e92c69e95df0f2 100644 (file)
@@ -22,7 +22,7 @@ dnl along with this program; if not, write to the Free Software
 dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 dnl 02110-1301, USA.
 dnl 
-dnl $Id: configure.ac 8299 2007-08-13 08:41:18Z michi $
+dnl $Id: configure.ac 8301 2007-08-13 13:34:12Z twisti $
 
 dnl Process this file with autoconf to produce a configure script.
 
@@ -249,6 +249,10 @@ AC_TYPE_SIZE_T
 AC_HEADER_TIME
 AC_STRUCT_TM
 
+dnl Checks for libraries (NOTE: Should be done before function checks,
+dnl as some functions may be in libraries we check for).
+AC_CHECK_LIB(dl, dlopen,,)
+
 dnl Checks for library functions.
 AC_PROG_GCC_TRADITIONAL
 AC_TYPE_SIGNAL
@@ -803,37 +807,14 @@ AC_CHECK_ENABLE_ZLIB
 
 dnl check for stuff to be built
 AC_CHECK_ENABLE_JNI
+AC_CHECK_ENABLE_LIBJVM
 
-
-dnl check if a libjvm.so should be built
-AC_MSG_CHECKING(whether to build a libjvm.so)
-AC_ARG_ENABLE([libjvm],
-              [AS_HELP_STRING(--disable-libjvm,build a libjvm.so [[default=yes]])],
-              [case "${enableval}" in
-                  no) ENABLE_LIBJVM=no;;
-                  *) ENABLE_LIBJVM=yes;;
-               esac],
-              [ENABLE_LIBJVM=yes])
-AC_MSG_RESULT(${ENABLE_LIBJVM})
-AM_CONDITIONAL([ENABLE_LIBJVM], test x"${ENABLE_LIBJVM}" = "xyes")
-AC_SUBST(ENABLE_LIBJVM)
-
-if test x"${ENABLE_LIBJVM}" = "xyes"; then
-    AC_DEFINE([ENABLE_LIBJVM], 1, [enable libjvm.so])
-
-    dnl set AC_ENABLE_SHARED and AC_DISABLE_STATIC properly
-    enable_shared=yes
-    enable_static=no
-else
-    enable_shared=no
-    enable_static=yes
-fi
-
-dnl libtool stuff
+dnl ATTENTION: These check must be after setting
+dnl enable_shared/enable_static (happens in AC_CHECK_ENABLE_LIBJVM),
+dnl because libtool uses them to build the correct libraries.
 AC_LIBTOOL_DLOPEN
 AC_PROG_LIBTOOL
 
-
 dnl check if CACAO should be linked statically
 AC_MSG_CHECKING(whether to link CACAO statically)
 AC_ARG_ENABLE([staticvm],
index 285e11d6b7c0941228b4ddd4ccaaed31a47ebabf..de58bf9493b1a2401fd3a8c3ea6e34b93977ffa3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: dummy.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: dummy.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -123,7 +123,14 @@ java_handle_t *builtin_new(classinfo *c)
        return NULL;
 }
 
-java_objectarray *builtin_anewarray(int32_t size, classinfo *componentclass)
+java_handle_objectarray_t *builtin_anewarray(int32_t size, classinfo *componentclass)
+{
+       abort();
+
+       return NULL;
+}
+
+java_handle_bytearray_t *builtin_newarray_byte(int32_t size)
 {
        abort();
 
@@ -594,7 +601,7 @@ classinfo * resolve_classref_or_classinfo_eager(classref_or_classinfo cls,
 
 /* stacktrace *****************************************************************/
 
-java_objectarray *stacktrace_getClassContext()
+java_handle_objectarray_t *stacktrace_getClassContext()
 {
        return NULL;
 }
index 2e597df29033a7e7afbf8cdff2b2b44c3887415f..2dccb9855141bab4c3284ff728c9ab0b3da3ebf7 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: headers.c 8295 2007-08-11 17:57:24Z michi $
+   $Id: headers.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -174,24 +174,24 @@ static char *printtype(char *utf_ptr)
                fprintf(file, "double");
                break;
        case '[':
-               addoutputsize ( sizeof(java_arrayheader*) ); 
+               addoutputsize ( sizeof(java_array_t*) ); 
                switch (utf_nextu2(&utf_ptr)) {
-               case 'I':  fprintf (file, "java_intarray*"); break;
-               case 'J':  fprintf (file, "java_longarray*"); break;
-               case 'Z':  fprintf (file, "java_booleanarray*"); break;
-               case 'B':  fprintf (file, "java_bytearray*"); break;
-               case 'S':  fprintf (file, "java_shortarray*"); break;
-               case 'C':  fprintf (file, "java_chararray*"); break;
-               case 'F':  fprintf (file, "java_floatarray*"); break;
-               case 'D':  fprintf (file, "java_doublearray*"); break;
+               case 'I':  fprintf (file, "java_intarray_t*"); break;
+               case 'J':  fprintf (file, "java_longarray_t*"); break;
+               case 'Z':  fprintf (file, "java_booleanarray_t*"); break;
+               case 'B':  fprintf (file, "java_bytearray_t*"); break;
+               case 'S':  fprintf (file, "java_shortarray_t*"); break;
+               case 'C':  fprintf (file, "java_chararray_t*"); break;
+               case 'F':  fprintf (file, "java_floatarray_t*"); break;
+               case 'D':  fprintf (file, "java_doublearray_t*"); break;
                                
-               case '[': fprintf(file, "java_objectarray*");
+               case '[': fprintf(file, "java_objectarray_t*");
                        while ((c = utf_nextu2(&utf_ptr)) == '[');
                        if (c == 'L')
                                while (utf_nextu2(&utf_ptr) != ';');
                        break;
                            
-               case 'L':  fprintf(file, "java_objectarray*");
+               case 'L':  fprintf(file, "java_objectarray_t*");
                        while (utf_nextu2(&utf_ptr) != ';');
                        break;
                default:
index a404eff6b2d3e033c15c4c9230fbb6bd891d614d..16ef7adb6ac28b1da310046d3e0cd9ee6c9b4653 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: headers.h 8295 2007-08-11 17:57:24Z michi $
+   $Id: headers.h 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -42,7 +42,6 @@
 
 /* export variables ***********************************************************/
 
-#warning object or handle???
 extern java_object_t *_exceptionptr;
 extern chain *nativemethod_chain;
 extern chain *nativeclass_chain;
index 162aebcb0d872f897b051029d9a7b1cae5d5297f..aa7d44e92e3bbedbf4506339dddaf6c39ecf5db0 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: jni.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: jni.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
 
 #include "mm/gc-common.h"
 #include "mm/memory.h"
+
 #include "native/jni.h"
 #include "native/llni.h"
+#include "native/localref.h"
 #include "native/native.h"
 
 #if defined(ENABLE_JAVASE)
@@ -786,7 +788,7 @@ static void _Jv_jni_CallVoidMethodA(java_handle_t *o, vftbl_t *vftbl,
 *******************************************************************************/
 
 java_handle_t *_Jv_jni_invokeNative(methodinfo *m, java_handle_t *o,
-                                                                       java_objectarray *params)
+                                                                       java_handle_objectarray_t *params)
 {
        methodinfo    *resm;
        java_handle_t *ro;
@@ -822,7 +824,7 @@ java_handle_t *_Jv_jni_invokeNative(methodinfo *m, java_handle_t *o,
        /* check if we got the right number of arguments */
 
        if (((params == NULL) && (paramcount != 0)) ||
-               (params && (params->header.size != paramcount))) 
+               (params && (LLNI_array_size(params) != paramcount))) 
        {
                exceptions_throw_illegalargumentexception();
                return NULL;
@@ -2634,9 +2636,9 @@ void _Jv_JNI_SetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID fieldID,
 
 jstring _Jv_JNI_NewString(JNIEnv *env, const jchar *buf, jsize len)
 {
-       java_lang_String *s;
-       java_chararray   *a;
-       u4                i;
+       java_lang_String        *s;
+       java_handle_chararray_t *a;
+       u4                       i;
 
        STATISTICS(jniinvokation());
        
@@ -2649,7 +2651,7 @@ jstring _Jv_JNI_NewString(JNIEnv *env, const jchar *buf, jsize len)
 
        /* copy text */
        for (i = 0; i < len; i++)
-               a->data[i] = buf[i];
+               LLNI_array_direct(a, i) = buf[i];
 
        LLNI_field_set_ref(s, value , a);
        LLNI_field_set_val(s, offset, 0);
@@ -2687,10 +2689,12 @@ jsize _Jv_JNI_GetStringLength(JNIEnv *env, jstring str)
        
 u2 *javastring_tou2(jstring so) 
 {
-       java_lang_String *s;
-       java_chararray   *a;
-       u2               *stringbuffer;
-       u4                i;
+       java_lang_String        *s;
+       java_handle_chararray_t *a;
+       u2                      *stringbuffer;
+       u4                       i;
+       int32_t                  count;
+       int32_t                  offset;
 
        STATISTICS(jniinvokation());
        
@@ -2704,14 +2708,17 @@ u2 *javastring_tou2(jstring so)
        if (!a)
                return NULL;
 
+       LLNI_field_get_val(s, count, count);
+       LLNI_field_get_val(s, offset, offset);
+
        /* allocate memory */
 
-       stringbuffer = MNEW(u2, LLNI_field_direct(s, count) + 1);
+       stringbuffer = MNEW(u2, count + 1);
 
        /* copy text */
 
-       for (i = 0; i < LLNI_field_direct(s, count); i++)
-               stringbuffer[i] = a->data[LLNI_field_direct(s, offset) + i];
+       for (i = 0; i < count; i++)
+               stringbuffer[i] = LLNI_array_direct(a, offset + i);
        
        /* terminate string */
 
@@ -2796,14 +2803,14 @@ jstring _Jv_JNI_NewStringUTF(JNIEnv *env, const char *bytes)
 
 jsize _Jv_JNI_GetStringUTFLength(JNIEnv *env, jstring string)
 {   
-    java_lang_String *s;
+       java_lang_String *s;
        s4                length;
 
        TRACEJNICALLS("_Jv_JNI_GetStringUTFLength(env=%p, string=%p)", env, string);
 
        s = (java_lang_String *) string;
 
-    length = u2_utflength(LLNI_field_direct(s, value)->data, LLNI_field_direct(s, count));
+       length = u2_utflength(LLNI_field_direct(s, value)->data, LLNI_field_direct(s, count));
 
        return length;
 }
@@ -2867,13 +2874,16 @@ void _Jv_JNI_ReleaseStringUTFChars(JNIEnv *env, jstring string, const char *utf)
 
 jsize _Jv_JNI_GetArrayLength(JNIEnv *env, jarray array)
 {
-       java_arrayheader *a;
+       java_handle_t *a;
+       jsize          size;
 
        STATISTICS(jniinvokation());
 
-       a = (java_arrayheader *) array;
+       a = (java_handle_t *) array;
 
-       return a->size;
+       size = LLNI_array_size(a);
+
+       return size;
 }
 
 
@@ -2887,10 +2897,10 @@ jsize _Jv_JNI_GetArrayLength(JNIEnv *env, jarray array)
 jobjectArray _Jv_JNI_NewObjectArray(JNIEnv *env, jsize length,
                                                                        jclass elementClass, jobject initialElement)
 {
-       classinfo         *c;
-       java_handle_t     *o;
-       java_objectarray  *oa;
-       s4                 i;
+       classinfo                 *c;
+       java_handle_t             *o;
+       java_handle_objectarray_t *oa;
+       s4                         i;
 
        STATISTICS(jniinvokation());
 
@@ -2910,7 +2920,7 @@ jobjectArray _Jv_JNI_NewObjectArray(JNIEnv *env, jsize length,
        /* set all elements to initialElement */
 
        for (i = 0; i < length; i++)
-               oa->data[i] = o;
+               LLNI_objectarray_element_set(oa, i, o);
 
        return (jobjectArray) _Jv_JNI_NewLocalRef(env, (jobject) oa);
 }
@@ -2919,19 +2929,19 @@ jobjectArray _Jv_JNI_NewObjectArray(JNIEnv *env, jsize length,
 jobject _Jv_JNI_GetObjectArrayElement(JNIEnv *env, jobjectArray array,
                                                                          jsize index)
 {
-       java_objectarray *oa;
-       java_handle_t    *o;
+       java_handle_objectarray_t *oa;
+       java_handle_t             *o;
 
        STATISTICS(jniinvokation());
 
-       oa = (java_objectarray *) array;
+       oa = (java_handle_objectarray_t *) array;
 
-       if (index >= oa->header.size) {
+       if (index >= LLNI_array_size(oa)) {
                exceptions_throw_arrayindexoutofboundsexception();
                return NULL;
        }
 
-       o = oa->data[index];
+       LLNI_objectarray_element_get(oa, index, o);
 
        return _Jv_JNI_NewLocalRef(env, (jobject) o);
 }
@@ -2940,15 +2950,15 @@ jobject _Jv_JNI_GetObjectArrayElement(JNIEnv *env, jobjectArray array,
 void _Jv_JNI_SetObjectArrayElement(JNIEnv *env, jobjectArray array,
                                                                   jsize index, jobject val)
 {
-       java_objectarray *oa;
-       java_handle_t    *o;
+       java_handle_objectarray_t *oa;
+       java_handle_t             *o;
 
        STATISTICS(jniinvokation());
 
-       oa = (java_objectarray *) array;
+       oa = (java_handle_objectarray_t *) array;
        o  = (java_handle_t *) val;
 
-       if (index >= oa->header.size) {
+       if (index >= LLNI_array_size(oa)) {
                exceptions_throw_arrayindexoutofboundsexception();
                return;
        }
@@ -2959,14 +2969,14 @@ void _Jv_JNI_SetObjectArrayElement(JNIEnv *env, jobjectArray array,
        if (!builtin_canstore(oa, o))
                return;
 
-       oa->data[index] = o;
+       LLNI_objectarray_element_set(oa, index, o);
 }
 
 
 #define JNI_NEW_ARRAY(name, type, intern)                \
 type _Jv_JNI_New##name##Array(JNIEnv *env, jsize len)    \
 {                                                        \
-       java_##intern##array *a;                             \
+       java_handle_##intern##array_t *a;                    \
                                                          \
        STATISTICS(jniinvokation());                         \
                                                          \
@@ -3000,16 +3010,16 @@ JNI_NEW_ARRAY(Double,  jdoubleArray,  double)
 type *_Jv_JNI_Get##name##ArrayElements(JNIEnv *env, type##Array array, \
                                                                                 jboolean *isCopy)             \
 {                                                                      \
-       java_##intern##array *a;                                           \
+       java_handle_##intern##array_t *a;                                  \
                                                                        \
        STATISTICS(jniinvokation());                                       \
                                                                        \
-       a = (java_##intern##array *) array;                                \
+       a = (java_handle_##intern##array_t *) array;                       \
                                                                        \
        if (isCopy)                                                        \
                *isCopy = JNI_FALSE;                                           \
                                                                        \
-       return a->data;                                                    \
+       return LLNI_array_data(a);                                         \
 }
 
 JNI_GET_ARRAY_ELEMENTS(Boolean, jboolean, boolean)
@@ -3033,30 +3043,30 @@ JNI_GET_ARRAY_ELEMENTS(Double,  jdouble,  double)
 
 *******************************************************************************/
 
-#define JNI_RELEASE_ARRAY_ELEMENTS(name, type, intern, intern2)           \
-void _Jv_JNI_Release##name##ArrayElements(JNIEnv *env, type##Array array, \
-                                                                                 type *elems, jint mode)         \
-{                                                                         \
-       java_##intern##array *a;                                              \
-                                                                          \
-       STATISTICS(jniinvokation());                                          \
-                                                                          \
-       a = (java_##intern##array *) array;                                   \
-                                                                          \
-       if (elems != a->data) {                                               \
-               switch (mode) {                                                   \
-               case JNI_COMMIT:                                                  \
-                       MCOPY(a->data, elems, intern2, a->header.size);               \
-                       break;                                                        \
-               case 0:                                                           \
-                       MCOPY(a->data, elems, intern2, a->header.size);               \
-                       /* XXX TWISTI how should it be freed? */                      \
-                       break;                                                        \
-               case JNI_ABORT:                                                   \
-                       /* XXX TWISTI how should it be freed? */                      \
-                       break;                                                        \
-               }                                                                 \
-       }                                                                     \
+#define JNI_RELEASE_ARRAY_ELEMENTS(name, type, intern, intern2)            \
+void _Jv_JNI_Release##name##ArrayElements(JNIEnv *env, type##Array array,  \
+                                                                                 type *elems, jint mode)          \
+{                                                                          \
+       java_handle_##intern##array_t *a;                                      \
+                                                                           \
+       STATISTICS(jniinvokation());                                           \
+                                                                           \
+       a = (java_handle_##intern##array_t *) array;                           \
+                                                                           \
+       if (elems != LLNI_array_data(a)) {                                     \
+               switch (mode) {                                                    \
+               case JNI_COMMIT:                                                   \
+                       MCOPY(LLNI_array_data(a), elems, intern2, LLNI_array_size(a)); \
+                       break;                                                         \
+               case 0:                                                            \
+                       MCOPY(LLNI_array_data(a), elems, intern2, LLNI_array_size(a)); \
+                       /* XXX TWISTI how should it be freed? */                       \
+                       break;                                                         \
+               case JNI_ABORT:                                                    \
+                       /* XXX TWISTI how should it be freed? */                       \
+                       break;                                                         \
+               }                                                                  \
+       }                                                                      \
 }
 
 JNI_RELEASE_ARRAY_ELEMENTS(Boolean, jboolean, boolean, u1)
@@ -3076,20 +3086,20 @@ JNI_RELEASE_ARRAY_ELEMENTS(Double,  jdouble,  double,  double)
 
 *******************************************************************************/
 
-#define JNI_GET_ARRAY_REGION(name, type, intern, intern2)              \
-void _Jv_JNI_Get##name##ArrayRegion(JNIEnv *env, type##Array array,    \
-                                                                       jsize start, jsize len, type *buf) \
-{                                                                      \
-       java_##intern##array *a;                                           \
-                                                                       \
-       STATISTICS(jniinvokation());                                       \
-                                                                       \
-       a = (java_##intern##array *) array;                                \
-                                                                       \
-       if ((start < 0) || (len < 0) || (start + len > a->header.size))    \
-               exceptions_throw_arrayindexoutofboundsexception();             \
-       else                                                               \
-               MCOPY(buf, &a->data[start], intern2, len);                     \
+#define JNI_GET_ARRAY_REGION(name, type, intern, intern2)               \
+void _Jv_JNI_Get##name##ArrayRegion(JNIEnv *env, type##Array array,     \
+                                                                       jsize start, jsize len, type *buf)  \
+{                                                                       \
+       java_handle_##intern##array_t *a;                                   \
+                                                                        \
+       STATISTICS(jniinvokation());                                        \
+                                                                        \
+       a = (java_handle_##intern##array_t *) array;                        \
+                                                                        \
+       if ((start < 0) || (len < 0) || (start + len > LLNI_array_size(a))) \
+               exceptions_throw_arrayindexoutofboundsexception();              \
+       else                                                                \
+               MCOPY(buf, &LLNI_array_direct(a, start), intern2, len);         \
 }
 
 JNI_GET_ARRAY_REGION(Boolean, jboolean, boolean, u1)
@@ -3113,16 +3123,16 @@ JNI_GET_ARRAY_REGION(Double,  jdouble,  double,  double)
 void _Jv_JNI_Set##name##ArrayRegion(JNIEnv *env, type##Array array,          \
                                                                        jsize start, jsize len, const type *buf) \
 {                                                                            \
-       java_##intern##array *a;                                                 \
+       java_handle_##intern##array_t *a;                                        \
                                                                              \
        STATISTICS(jniinvokation());                                             \
                                                                              \
-       a = (java_##intern##array *) array;                                      \
+       a = (java_handle_##intern##array_t *) array;                             \
                                                                              \
-       if ((start < 0) || (len < 0) || (start + len > a->header.size))          \
+       if ((start < 0) || (len < 0) || (start + len > LLNI_array_size(a)))      \
                exceptions_throw_arrayindexoutofboundsexception();                   \
        else                                                                     \
-               MCOPY(&a->data[start], buf, intern2, len);                           \
+               MCOPY(&LLNI_array_direct(a, start), buf, intern2, len);              \
 }
 
 JNI_SET_ARRAY_REGION(Boolean, jboolean, boolean, u1)
@@ -3271,8 +3281,8 @@ jint _Jv_JNI_GetJavaVM(JNIEnv *env, JavaVM **vm)
 void _Jv_JNI_GetStringRegion(JNIEnv* env, jstring str, jsize start, jsize len,
                                                         jchar *buf)
 {
-       java_lang_String *s;
-       java_chararray   *ca;
+       java_lang_String        *s;
+       java_handle_chararray_t *ca;
 
        STATISTICS(jniinvokation());
 
@@ -3285,7 +3295,7 @@ void _Jv_JNI_GetStringRegion(JNIEnv* env, jstring str, jsize start, jsize len,
                return;
        }
 
-       MCOPY(buf, &ca->data[start], u2, len);
+       MCOPY(buf, &LLNI_array_direct(ca, start), u2, len);
 }
 
 
@@ -3302,23 +3312,26 @@ void _Jv_JNI_GetStringRegion(JNIEnv* env, jstring str, jsize start, jsize len,
 void _Jv_JNI_GetStringUTFRegion(JNIEnv* env, jstring str, jsize start,
                                                                jsize len, char *buf)
 {
-       java_lang_String *s;
-       java_chararray   *ca;
-       s4                i;
+       java_lang_String        *s;
+       java_handle_chararray_t *ca;
+       s4                       i;
+       int32_t                  count;
+       int32_t                  offset;
 
        TRACEJNICALLS("_Jv_JNI_GetStringUTFRegion(env=%p, str=%p, start=%d, len=%d, buf=%p)", env, str, start, len, buf);
 
        s  = (java_lang_String *) str;
        LLNI_field_get_ref(s, value, ca);
+       LLNI_field_get_val(s, count, count);
+       LLNI_field_get_val(s, offset, offset);
 
-       if ((start < 0) || (len < 0) || (start > LLNI_field_direct(s, count)) ||
-               (start + len > LLNI_field_direct(s, count))) {
+       if ((start < 0) || (len < 0) || (start > count) || (start + len > count)) {
                exceptions_throw_stringindexoutofboundsexception();
                return;
        }
 
        for (i = 0; i < len; i++)
-               buf[i] = ca->data[LLNI_field_direct(s, offset) + start + i];
+               buf[i] = LLNI_array_direct(ca, offset + start + i);
 
        buf[i] = '\0';
 }
@@ -3333,10 +3346,10 @@ void _Jv_JNI_GetStringUTFRegion(JNIEnv* env, jstring str, jsize start,
 void *_Jv_JNI_GetPrimitiveArrayCritical(JNIEnv *env, jarray array,
                                                                                jboolean *isCopy)
 {
-       java_bytearray *ba;
-       jbyte          *bp;
+       java_handle_bytearray_t *ba;
+       jbyte                   *bp;
 
-       ba = (java_bytearray *) array;
+       ba = (java_handle_bytearray_t *) array;
 
        /* do the same as Kaffe does */
 
index e295b00f14509a6b344ce669ddf3a831d4344d72..9dacaf72c82919940b9ecceb684ac9bbbc552664 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: jni.h 8297 2007-08-12 00:02:48Z michi $
+   $Id: jni.h 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -112,7 +112,7 @@ struct hashtable_global_ref_entry {
 bool jni_init(void);
 
 java_handle_t *_Jv_jni_invokeNative(methodinfo *m, java_handle_t *o,
-                                                                               java_objectarray *params);
+                                                                       java_handle_objectarray_t *params);
 
 #endif /* _JNI_H */
 
index 09d89b352266f3ed0a83a05b418564ae7b3ad3c4..a9a9d33680b0ff6b26ce816528f5db2c53b9c2f5 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id$
+   $Id: localref.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
 
 #include "threads/threads-common.h"
 
+#include "toolbox/logging.h"
+
+
+/* debug **********************************************************************/
+
+#if !defined(NDEBUG) && 0
+# define TRACELOCALREF(message) log_println("%s", message)
+#else
+# define TRACELOCALREF(message)
+#endif
+
 
 /* global variables ***********************************************************/
 
@@ -56,6 +67,8 @@ bool localref_table_init(void)
 {
        localref_table *lrt;
 
+       TRACELOCALREF("table init");
+
        assert(LOCALREFTABLE == NULL);
 
 #if defined(ENABLE_GC_CACAO)
@@ -113,8 +126,8 @@ void localref_table_remove()
 
        lrt = LOCALREFTABLE;
 
+       assert(lrt != NULL);
        assert(lrt->localframes == 1);
-       assert(lrt->prev != NULL);
 
        lrt = lrt->prev;
 
@@ -135,6 +148,13 @@ bool localref_frame_push(int32_t capacity)
        localref_table *nlrt;
        int32_t         additionalrefs;
 
+       TRACELOCALREF("frame push");
+
+       /* get current local reference table from thread */
+
+       lrt = LOCALREFTABLE;
+
+       assert(lrt != NULL);
        assert(capacity > 0);
 
        /* Allocate new local reference table on Java heap.  Calculate the
@@ -154,10 +174,6 @@ bool localref_frame_push(int32_t capacity)
        if (nlrt == NULL)
                return false;
 
-       /* get current local reference table from thread */
-
-       lrt = LOCALREFTABLE;
-
        /* Set up the new local reference table and add it to the local
           frames chain. */
 
@@ -187,10 +203,14 @@ void localref_frame_pop_all(void)
        int32_t         localframes;
        int32_t         additionalrefs;
 
+       TRACELOCALREF("frame pop all");
+
        /* get current local reference table from thread */
 
        lrt = LOCALREFTABLE;
 
+       assert(lrt != NULL);
+
        localframes = lrt->localframes;
 
        /* Don't delete the top local frame, as this one is allocated in
@@ -252,10 +272,10 @@ void localref_dump()
 
        lrt = LOCALREFTABLE;
 
-       printf("\n--------- Local Reference Tables Dump ---------\n");
+       log_println("--------- Local Reference Tables Dump ---------");
 
        while (lrt != NULL) {
-               printf("Frame #%d, Used=%d, Capacity=%d, Addr=%p:\n", lrt->localframes, lrt->used, lrt->capacity, (void *) lrt);
+               log_println("Frame #%d, Used=%d, Capacity=%d, Addr=%p:", lrt->localframes, lrt->used, lrt->capacity, (void *) lrt);
 
                for (i = 0; i < lrt->used; i++) {
                        printf("\t0x%08lx ", (intptr_t) lrt->refs[i]);
index 716bd47d21008a0269687746df8a98b02043111c..d8525ea4940b7be6744bbac83eeb009791b0e8a1 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: gnu_classpath_VMStackWalker.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: gnu_classpath_VMStackWalker.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -30,6 +30,7 @@
 #include "config.h"
 
 #include "native/jni.h"
+#include "native/llni.h"
 #include "native/native.h"
 
 #include "native/include/java_lang_Class.h"
@@ -76,9 +77,9 @@ void _Jv_gnu_classpath_VMStackWalker_init(void)
  * Method:    getClassContext
  * Signature: ()[Ljava/lang/Class;
  */
-JNIEXPORT java_objectarray* JNICALL Java_gnu_classpath_VMStackWalker_getClassContext(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_gnu_classpath_VMStackWalker_getClassContext(JNIEnv *env, jclass clazz)
 {
-       java_objectarray *oa;
+       java_handle_objectarray_t *oa;
 
        oa = stacktrace_getClassContext();
 
@@ -93,17 +94,20 @@ JNIEXPORT java_objectarray* JNICALL Java_gnu_classpath_VMStackWalker_getClassCon
  */
 JNIEXPORT java_lang_Class* JNICALL Java_gnu_classpath_VMStackWalker_getCallingClass(JNIEnv *env, jclass clazz)
 {
-       java_objectarray *oa;
+       java_handle_objectarray_t *oa;
+       java_handle_t             *o;
 
        oa = stacktrace_getClassContext();
 
        if (oa == NULL)
                return NULL;
 
-       if (oa->header.size < 2)
+       if (LLNI_array_size(oa) < 2)
                return NULL;
 
-       return (java_lang_Class *) oa->data[1];
+       LLNI_objectarray_element_get(oa, 1, o);
+
+       return (java_lang_Class *) o;
 }
 
 
@@ -114,20 +118,20 @@ JNIEXPORT java_lang_Class* JNICALL Java_gnu_classpath_VMStackWalker_getCallingCl
  */
 JNIEXPORT java_lang_ClassLoader* JNICALL Java_gnu_classpath_VMStackWalker_getCallingClassLoader(JNIEnv *env, jclass clazz)
 {
-       java_objectarray *oa;
-       classinfo        *c;
-       classloader      *cl;
+       java_handle_objectarray_t *oa;
+       classinfo                 *c;
+       classloader               *cl;
 
        oa = stacktrace_getClassContext();
 
        if (oa == NULL)
                return NULL;
 
-       if (oa->header.size < 2)
+       if (LLNI_array_size(oa) < 2)
                return NULL;
         
-       c   = (classinfo *) oa->data[1];
-       cl  = c->classloader;
+       c  = (classinfo *) LLNI_array_direct(oa, 1);
+       cl = c->classloader;
 
        if (cl == NULL)
                return NULL;
@@ -143,18 +147,18 @@ JNIEXPORT java_lang_ClassLoader* JNICALL Java_gnu_classpath_VMStackWalker_getCal
  */
 JNIEXPORT java_lang_ClassLoader* JNICALL Java_gnu_classpath_VMStackWalker_firstNonNullClassLoader(JNIEnv *env, jclass clazz)
 {
-       java_objectarray *oa;
-       classinfo        *c;
-       classloader      *cl;
-       s4                i;
+       java_handle_objectarray_t *oa;
+       classinfo                 *c;
+       classloader               *cl;
+       s4                         i;
 
        oa = stacktrace_getClassContext();
 
        if (oa == NULL)
                return NULL;
 
-       for (i = 0; i < oa->header.size; i++) {
-               c  = (classinfo *) oa->data[i];
+       for (i = 0; i < LLNI_array_size(oa); i++) {
+               c  = (classinfo *) LLNI_array_direct(oa, i);
                cl = c->classloader;
 
                if (cl != NULL)
index 990e7d96016745c90f768351b1d2877720754f3c..6bf92015dd4238613890bbfaf1ea3d6a5a7db43a 100644 (file)
@@ -73,7 +73,7 @@ void _Jv_gnu_java_lang_management_VMRuntimeMXBeanImpl_init(void)
  * Method:    getInputArguments
  * Signature: ()[Ljava/lang/String;
  */
-JNIEXPORT java_objectarray* JNICALL Java_gnu_java_lang_management_VMRuntimeMXBeanImpl_getInputArguments(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_gnu_java_lang_management_VMRuntimeMXBeanImpl_getInputArguments(JNIEnv *env, jclass clazz)
 {
        log_println("Java_gnu_java_lang_management_VMRuntimeMXBeanImpl_getInputArguments: IMPLEMENT ME!");
 
index 44047f27c02ff61b66020a175c936cca1085258c..fc7c2a2d7de6adefa66736154b3b94c912673ed6 100644 (file)
@@ -85,7 +85,7 @@ void _Jv_gnu_java_lang_management_VMThreadMXBeanImpl_init(void)
  * Method:    findMonitorDeadlockedThreads
  * Signature: ()[J
  */
-JNIEXPORT java_longarray* JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_findMonitorDeadlockedThreads(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_longarray_t* JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_findMonitorDeadlockedThreads(JNIEnv *env, jclass clazz)
 {
        log_println("Java_gnu_java_lang_management_VMThreadMXBeanImpl_findMonitorDeadlockedThreads: IMPLEMENT ME!");
 
index 60f8932372e31e8011dd3b04ccc81517f06754ab..723d9a6a0a0de4000d72bfee2cfb66dfddf599f2 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_VMClass.c 8249 2007-07-31 12:59:03Z panzi $
+   $Id: java_lang_VMClass.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -168,7 +168,7 @@ JNIEXPORT java_lang_Class* JNICALL Java_java_lang_VMClass_getSuperclass(JNIEnv *
  * Method:    getInterfaces
  * Signature: (Ljava/lang/Class;)[Ljava/lang/Class;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getInterfaces(JNIEnv *env, jclass clazz, java_lang_Class *klass)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getInterfaces(JNIEnv *env, jclass clazz, java_lang_Class *klass)
 {
        return _Jv_java_lang_Class_getInterfaces(klass);
 }
@@ -212,7 +212,7 @@ JNIEXPORT java_lang_Class* JNICALL Java_java_lang_VMClass_getDeclaringClass(JNIE
  * Method:    getDeclaredClasses
  * Signature: (Ljava/lang/Class;Z)[Ljava/lang/Class;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredClasses(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getDeclaredClasses(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
 {
        return _Jv_java_lang_Class_getDeclaredClasses(klass, publicOnly);
 }
@@ -223,7 +223,7 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredClasses(JN
  * Method:    getDeclaredFields
  * Signature: (Ljava/lang/Class;Z)[Ljava/lang/reflect/Field;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredFields(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getDeclaredFields(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
 {
        return _Jv_java_lang_Class_getDeclaredFields(klass, publicOnly);
 }
@@ -234,7 +234,7 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredFields(JNI
  * Method:    getDeclaredMethods
  * Signature: (Ljava/lang/Class;Z)[Ljava/lang/reflect/Method;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredMethods(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getDeclaredMethods(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
 {
        return _Jv_java_lang_Class_getDeclaredMethods(klass, publicOnly);
 }
@@ -245,7 +245,7 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredMethods(JN
  * Method:    getDeclaredConstructors
  * Signature: (Ljava/lang/Class;Z)[Ljava/lang/reflect/Constructor;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredConstructors(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getDeclaredConstructors(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
 {
        return _Jv_java_lang_Class_getDeclaredConstructors(klass, publicOnly);
 }
@@ -301,7 +301,7 @@ JNIEXPORT void JNICALL Java_java_lang_VMClass_throwException(JNIEnv *env, jclass
  * Method:    getDeclaredAnnotations
  * Signature: (Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredAnnotations(JNIEnv *env, jclass clazz, java_lang_Class* klass)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getDeclaredAnnotations(JNIEnv *env, jclass clazz, java_lang_Class* klass)
 {
        return _Jv_java_lang_Class_getDeclaredAnnotations(klass);
 }
index 84581691504ac147c3f0e0b37a48d4c49921ed78..1ef3d9a0df219f96f7078b86433a25fe6492e05e 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_VMClassLoader.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: java_lang_VMClassLoader.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -107,7 +107,7 @@ void _Jv_java_lang_VMClassLoader_init(void)
  * Method:    defineClass
  * Signature: (Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;
  */
-JNIEXPORT java_lang_Class* JNICALL Java_java_lang_VMClassLoader_defineClass(JNIEnv *env, jclass clazz, java_lang_ClassLoader *cl, java_lang_String *name, java_bytearray *data, s4 offset, s4 len, java_security_ProtectionDomain *pd)
+JNIEXPORT java_lang_Class* JNICALL Java_java_lang_VMClassLoader_defineClass(JNIEnv *env, jclass clazz, java_lang_ClassLoader *cl, java_lang_String *name, java_handle_bytearray_t *data, s4 offset, s4 len, java_security_ProtectionDomain *pd)
 {
        return _Jv_java_lang_ClassLoader_defineClass(cl, name, data, offset, len, pd);
 }
index 1b13f7ffe9283c8814a623c1d8001d2564e71909..8e27184ab754a7911b6b8ca908e80153269e78fb 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_VMSystem.c 7918 2007-05-20 20:42:18Z michi $
+   $Id: java_lang_VMSystem.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -78,8 +78,8 @@ void _Jv_java_lang_VMSystem_init(void)
  */
 JNIEXPORT void JNICALL Java_java_lang_VMSystem_arraycopy(JNIEnv *env, jclass clazz, java_lang_Object *src, s4 srcStart, java_lang_Object *dest, s4 destStart, s4 len)
 {
-       (void) builtin_arraycopy((java_arrayheader *) src, srcStart,
-                                                        (java_arrayheader *) dest, destStart, len);
+       (void) builtin_arraycopy((java_handle_t *) src, srcStart,
+                                                        (java_handle_t *) dest, destStart, len);
 }
 
 
index e7a2427ebb58254e18754c44216592c38fe09a8e..e7d282e590cb51fccdce0e0611cff9936e9b371c 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_VMThrowable.c 8295 2007-08-11 17:57:24Z michi $
+   $Id: java_lang_VMThrowable.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -112,7 +112,7 @@ JNIEXPORT java_lang_VMThrowable* JNICALL Java_java_lang_VMThrowable_fillInStackT
  * Method:    getStackTrace
  * Signature: (Ljava/lang/Throwable;)[Ljava/lang/StackTraceElement;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMThrowable_getStackTrace(JNIEnv *env, java_lang_VMThrowable *this, java_lang_Throwable *t)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMThrowable_getStackTrace(JNIEnv *env, java_lang_VMThrowable *this, java_lang_Throwable *t)
 {
        stacktracecontainer         *stc;
        stacktracebuffer            *stb;
@@ -125,7 +125,7 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMThrowable_getStackTrace(JNI
        bool                         leftexceptionclass;
 
        methodinfo                  *m;
-       java_objectarray            *oa;
+       java_handle_objectarray_t   *oa;
        s4                           oalength;
        java_lang_StackTraceElement *o;
        java_lang_String            *filename;
@@ -263,7 +263,7 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMThrowable_getStackTrace(JNI
                LLNI_field_set_ref(o, methodName    , (java_lang_String *) javastring_new(ste->method->name));
                LLNI_field_set_val(o, isNative      , (ste->method->flags & ACC_NATIVE) ? 1 : 0);
 
-               oa->data[i] = o;
+               LLNI_objectarray_element_set(oa, i, o);
        }
 
        return oa;
index e4e78fa0b96d117555b28cae7c2f8fdc9582f152..1e0f4ecebf3074efb2754c9471deec003da05472 100644 (file)
@@ -75,9 +75,9 @@ void _Jv_java_lang_management_VMManagementFactory_init(void)
  * Method:    getMemoryPoolNames
  * Signature: ()[Ljava/lang/String;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_management_VMManagementFactory_getMemoryPoolNames(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_management_VMManagementFactory_getMemoryPoolNames(JNIEnv *env, jclass clazz)
 {
-       java_objectarray *oa;
+       java_handle_objectarray_t *oa;
 
        log_println("Java_java_lang_management_VMManagementFactory_getMemoryPoolNames: IMPLEMENT ME!");
 
@@ -92,9 +92,9 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_management_VMManagementFactor
  * Method:    getMemoryManagerNames
  * Signature: ()[Ljava/lang/String;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_management_VMManagementFactory_getMemoryManagerNames(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_management_VMManagementFactory_getMemoryManagerNames(JNIEnv *env, jclass clazz)
 {
-       java_objectarray *oa;
+       java_handle_objectarray_t *oa;
 
        log_println("Java_java_lang_management_VMManagementFactory_getMemoryManagerNames: IMPLEMENT ME!");
 
@@ -109,9 +109,9 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_management_VMManagementFactor
  * Method:    getGarbageCollectorNames
  * Signature: ()[Ljava/lang/String;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_management_VMManagementFactory_getGarbageCollectorNames(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_management_VMManagementFactory_getGarbageCollectorNames(JNIEnv *env, jclass clazz)
 {
-       java_objectarray *oa;
+       java_handle_objectarray_t *oa;
 
        log_println("Java_java_lang_management_VMManagementFactory_getGarbageCollectorNames: IMPLEMENT ME!");
 
index 3a82a63aab28b0e2bc8cce0fe2845118083386d2..605a2b9ae5209ca800151bf257918ccb5f3890a3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_reflect_Constructor.c 8295 2007-08-11 17:57:24Z michi $
+   $Id: java_lang_reflect_Constructor.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -34,6 +34,7 @@
 
 #if defined(ENABLE_ANNOTATIONS)
 #include "vm/vm.h"
+#include "vm/exceptions.h"
 #endif
 
 #include "vm/types.h"
@@ -93,7 +94,7 @@ void _Jv_java_lang_reflect_Constructor_init(void)
  * Method:    constructNative
  * Signature: ([Ljava/lang/Object;Ljava/lang/Class;I)Ljava/lang/Object;
  */
-JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_constructNative(JNIEnv *env, java_lang_reflect_Constructor *this, java_objectarray *args, java_lang_Class *declaringClass, s4 slot)
+JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_constructNative(JNIEnv *env, java_lang_reflect_Constructor *this, java_handle_objectarray_t *args, java_lang_Class *declaringClass, s4 slot)
 {
        /* just to be sure */
 
@@ -112,14 +113,28 @@ JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_construct
  */
 JNIEXPORT struct java_util_Map* JNICALL Java_java_lang_reflect_Constructor_declaredAnnotations(JNIEnv *env, struct java_lang_reflect_Constructor* this)
 {
-       java_handle_t *o = (java_handle_t*)this;
+       java_handle_t        *o                   = (java_handle_t*)this;
+       struct java_util_Map *declaredAnnotations = NULL;
+       java_bytearray       *annotations         = NULL;
+       java_lang_Class      *declaringClass      = NULL;
 
        if (this == NULL) {
                exceptions_throw_nullpointerexception();
                return NULL;
        }
+       
+       LLNI_field_get_ref(this, declaredAnnotations, declaredAnnotations);
 
-       return reflect_get_declaredannotatios(&(this->declaredAnnotations), this->annotations, this->clazz, o->vftbl->class);
+       if (declaredAnnotations == NULL) {
+               LLNI_field_get_val(this, annotations, annotations);
+               LLNI_field_get_ref(this, clazz, declaringClass);
+
+               declaredAnnotations = reflect_get_declaredannotatios(annotations, declaringClass, o->vftbl->class);
+
+               LLNI_field_set_ref(this, declaredAnnotations, declaredAnnotations);
+       }
+
+       return declaredAnnotations;
 }
 
 
@@ -128,16 +143,23 @@ JNIEXPORT struct java_util_Map* JNICALL Java_java_lang_reflect_Constructor_decla
  * Method:    getParameterAnnotations
  * Signature: ()[[Ljava/lang/annotation/Annotation;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Constructor_getParameterAnnotations(JNIEnv *env, struct java_lang_reflect_Constructor* this)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_reflect_Constructor_getParameterAnnotations(JNIEnv *env, struct java_lang_reflect_Constructor* this)
 {
-       java_handle_t *o = (java_handle_t*)this;
+       java_handle_t   *o                    = (java_handle_t*)this;
+       java_bytearray  *parameterAnnotations = NULL;
+       int32_t          slot                 = -1;
+       java_lang_Class *declaringClass       = NULL;
 
        if (this == NULL) {
                exceptions_throw_nullpointerexception();
                return NULL;
        }
 
-       return reflect_get_parameterannotations((java_handle_t*)this->parameterAnnotations, this->slot, this->clazz, o->vftbl->class);
+       LLNI_field_get_ref(this, parameterAnnotations, parameterAnnotations);
+       LLNI_field_get_val(this, slot, slot);
+       LLNI_field_get_ref(this, clazz, declaringClass);
+
+       return reflect_get_parameterannotations((java_handle_t*)parameterAnnotations, slot, declaringClass, o->vftbl->class);
 }
 #endif
 
index b35f70a14c8f6d2576f8bf374c05853d3353b220..a58447c3993e5ae280d67c35c1c59a70be15f5d1 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_reflect_Field.c 8295 2007-08-11 17:57:24Z michi $
+   $Id: java_lang_reflect_Field.c 8305 2007-08-15 13:49:26Z panzi $
 
 */
 
@@ -1253,14 +1253,28 @@ JNIEXPORT java_lang_String* JNICALL Java_java_lang_reflect_Field_getSignature(JN
  */
 JNIEXPORT struct java_util_Map* JNICALL Java_java_lang_reflect_Field_declaredAnnotations(JNIEnv *env, struct java_lang_reflect_Field* this)
 {
-       java_handle_t *o = (java_handle_t*)this;
+       java_handle_t        *o                   = (java_handle_t*)this;
+       struct java_util_Map *declaredAnnotations = NULL;
+       java_bytearray       *annotations         = NULL;
+       java_lang_Class      *declaringClass      = NULL;
 
        if (this == NULL) {
                exceptions_throw_nullpointerexception();
                return NULL;
        }
 
-       return reflect_get_declaredannotatios(&(this->declaredAnnotations), this->annotations, this->clazz, o->vftbl->class);
+       LLNI_field_get_ref(this, declaredAnnotations, declaredAnnotations);
+
+       if (declaredAnnotations == NULL) {
+               LLNI_field_get_val(this, annotations, annotations);
+               LLNI_field_get_ref(this, clazz, declaringClass);
+
+               declaredAnnotations = reflect_get_declaredannotatios(annotations, declaringClass, o->vftbl->class);
+
+               LLNI_field_set_ref(this, declaredAnnotations, declaredAnnotations);
+       }
+
+       return declaredAnnotations;
 }
 #endif
 
index 826fbdc19ca3ded27f5d893fc1839253fe8bd5dc..70021936326c5a27487875c1060ffc2d0846114d 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_reflect_Method.c 8295 2007-08-11 17:57:24Z michi $
+   $Id: java_lang_reflect_Method.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -144,7 +144,7 @@ JNIEXPORT java_lang_Class* JNICALL Java_java_lang_reflect_Method_getReturnType(J
  * Method:    getParameterTypes
  * Signature: ()[Ljava/lang/Class;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getParameterTypes(JNIEnv *env, java_lang_reflect_Method *this)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_reflect_Method_getParameterTypes(JNIEnv *env, java_lang_reflect_Method *this)
 {
        classinfo  *c;
        methodinfo *m;
@@ -163,7 +163,7 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getParameterTy
  * Method:    getExceptionTypes
  * Signature: ()[Ljava/lang/Class;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getExceptionTypes(JNIEnv *env, java_lang_reflect_Method *this)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_reflect_Method_getExceptionTypes(JNIEnv *env, java_lang_reflect_Method *this)
 {
        classinfo  *c;
        methodinfo *m;
@@ -182,7 +182,7 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getExceptionTy
  * Method:    invokeNative
  * Signature: (Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Class;I)Ljava/lang/Object;
  */
-JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Method_invokeNative(JNIEnv *env, java_lang_reflect_Method *this, java_lang_Object *o, java_objectarray *args, java_lang_Class *clazz, s4 slot)
+JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Method_invokeNative(JNIEnv *env, java_lang_reflect_Method *this, java_lang_Object *o, java_handle_objectarray_t *args, java_lang_Class *clazz, s4 slot)
 {
        /* just to be sure */
 
@@ -229,9 +229,10 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Method_getDefa
 {
        static methodinfo        *m_parseAnnotationDefault   = NULL;
        utf                      *utf_parseAnnotationDefault = NULL;
-       utf                      *utf_desc     = NULL;
-       sun_reflect_ConstantPool *constantPool = NULL;
-       java_handle_t            *o            = (java_handle_t*)this;
+       utf                      *utf_desc        = NULL;
+       sun_reflect_ConstantPool *constantPool    = NULL;
+       java_handle_t            *o               = (java_handle_t*)this;
+       java_lang_Class          *constantPoolOop = NULL;
 
        if (this == NULL) {
                exceptions_throw_nullpointerexception();
@@ -247,7 +248,8 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Method_getDefa
                return NULL;
        }
 
-       constantPool->constantPoolOop = (java_lang_Object*)this->clazz;
+       LLNI_field_get_ref(this, clazz, constantPoolOop);
+       LLNI_field_set_ref(constantPool, constantPoolOop, (java_lang_Object*)constantPoolOop);
 
        /* only resolve the method the first time */
        if (m_parseAnnotationDefault == NULL) {
@@ -288,14 +290,28 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Method_getDefa
  */
 JNIEXPORT struct java_util_Map* JNICALL Java_java_lang_reflect_Method_declaredAnnotations(JNIEnv *env, struct java_lang_reflect_Method* this)
 {
-       java_handle_t *o = (java_handle_t*)this;
+       java_handle_t        *o                   = (java_handle_t*)this;
+       struct java_util_Map *declaredAnnotations = NULL;
+       java_bytearray       *annotations         = NULL;
+       java_lang_Class      *declaringClass      = NULL;
 
        if (this == NULL) {
                exceptions_throw_nullpointerexception();
                return NULL;
        }
 
-       return reflect_get_declaredannotatios(&(this->declaredAnnotations), this->annotations, this->clazz, o->vftbl->class);
+       LLNI_field_get_ref(this, declaredAnnotations, declaredAnnotations);
+
+       if (declaredAnnotations == NULL) {
+               LLNI_field_get_val(this, annotations, annotations);
+               LLNI_field_get_ref(this, clazz, declaringClass);
+
+               declaredAnnotations = reflect_get_declaredannotatios(annotations, declaringClass, o->vftbl->class);
+
+               LLNI_field_set_ref(this, declaredAnnotations, declaredAnnotations);
+       }
+
+       return declaredAnnotations;
 }
 
 
@@ -304,16 +320,23 @@ JNIEXPORT struct java_util_Map* JNICALL Java_java_lang_reflect_Method_declaredAn
  * Method:    getParameterAnnotations
  * Signature: ()[[Ljava/lang/annotation/Annotation;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getParameterAnnotations(JNIEnv *env, struct java_lang_reflect_Method* this)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_reflect_Method_getParameterAnnotations(JNIEnv *env, struct java_lang_reflect_Method* this)
 {
-       java_handle_t *o = (java_handle_t*)this;
+       java_handle_t   *o                    = (java_handle_t*)this;
+       java_bytearray  *parameterAnnotations = NULL;
+       int32_t          slot                 = -1;
+       java_lang_Class *declaringClass       = NULL;
 
        if (this == NULL) {
                exceptions_throw_nullpointerexception();
                return NULL;
        }
 
-       return reflect_get_parameterannotations((java_handle_t*)this->parameterAnnotations, this->slot, this->clazz, o->vftbl->class);
+       LLNI_field_get_ref(this, parameterAnnotations, parameterAnnotations);
+       LLNI_field_get_val(this, slot, slot);
+       LLNI_field_get_ref(this, clazz, declaringClass);
+
+       return reflect_get_parameterannotations((java_handle_t*)parameterAnnotations, slot, declaringClass, o->vftbl->class);
 }
 #endif
 
index 47dfe6cdfbccfa11a4ba6ac52d90cbbb18cce2e9..615c7109a2b74936d75c3a2366a7eda87a9d15a3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_security_VMAccessController.c 7910 2007-05-16 08:02:52Z twisti $
+   $Id: java_security_VMAccessController.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -71,7 +71,7 @@ void _Jv_java_security_VMAccessController_init(void)
  * Method:    getStack
  * Signature: ()[[Ljava/lang/Object;
  */
-JNIEXPORT java_objectarray* JNICALL Java_java_security_VMAccessController_getStack(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_security_VMAccessController_getStack(JNIEnv *env, jclass clazz)
 {
        return stacktrace_getStack();
 }
index d263a63c430008cdb613101aa3f113187195dba4..923ff43f1c26762f1bd36d822f94d7a3b3ab99c3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_Class.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: java_lang_Class.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -82,6 +82,7 @@
 #include "vmcore/loader.h"
 
 #if defined(WITH_CLASSPATH_GNU) && defined(ENABLE_ANNOTATIONS)
+#include "vm/vm.h"
 #include "vmcore/annotation.h"
 #include "native/include/sun_reflect_ConstantPool.h"
 #endif
@@ -95,7 +96,7 @@ java_lang_String *_Jv_java_lang_Class_getName(java_lang_Class *klass)
 {
        classinfo        *c;
        java_lang_String *s;
-       java_chararray   *ca;
+       java_chararray_t *ca;
        u4                i;
 
        c = (classinfo *) klass;
@@ -111,9 +112,9 @@ java_lang_String *_Jv_java_lang_Class_getName(java_lang_Class *klass)
 
        LLNI_field_get_ref(s, value, ca);
 
-       for (i = 0; i < ca->header.size; i++) {
-               if (ca->data[i] == '/')
-                       ca->data[i] = '.';
+       for (i = 0; i < LLNI_array_size(ca); i++) {
+               if (LLNI_array_direct(ca, i) == '/')
+                       LLNI_array_direct(ca, i) = '.';
        }
 
        return s;
@@ -290,7 +291,7 @@ java_lang_Class *_Jv_java_lang_Class_getSuperclass(java_lang_Class *klass)
 
        super = class_get_superclass(c);
 
-       return super;
+       return (java_lang_Class *) super;
 }
 
 
@@ -299,29 +300,14 @@ java_lang_Class *_Jv_java_lang_Class_getSuperclass(java_lang_Class *klass)
  * Method:    getInterfaces
  * Signature: ()[Ljava/lang/Class;
  */
-java_objectarray *_Jv_java_lang_Class_getInterfaces(java_lang_Class *klass)
+java_handle_objectarray_t *_Jv_java_lang_Class_getInterfaces(java_lang_Class *klass)
 {
-       classinfo        *c;
-       classinfo        *ic;
-       java_objectarray *oa;
-       u4                i;
+       classinfo                 *c;
+       java_handle_objectarray_t *oa;
 
        c = (classinfo *) klass;
 
-       if (!(c->state & CLASS_LINKED))
-               if (!link_class(c))
-                       return NULL;
-
-       oa = builtin_anewarray(c->interfacescount, class_java_lang_Class);
-
-       if (oa == NULL)
-               return NULL;
-
-       for (i = 0; i < c->interfacescount; i++) {
-               ic = c->interfaces[i].cls;
-
-               oa->data[i] = ic;
-       }
+       oa = class_get_interfaces(c);
 
        return oa;
 }
@@ -428,71 +414,14 @@ java_lang_Class *_Jv_java_lang_Class_getDeclaringClass(java_lang_Class *klass)
  * Method:    getDeclaredClasses
  * Signature: (Z)[Ljava/lang/Class;
  */
-java_objectarray *_Jv_java_lang_Class_getDeclaredClasses(java_lang_Class *klass, s4 publicOnly)
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredClasses(java_lang_Class *klass, s4 publicOnly)
 {
-       classinfo             *c;
-       classref_or_classinfo  outer;
-       utf                   *outername;
-       s4                     declaredclasscount;  /* number of declared classes */
-       s4                     pos;                     /* current declared class */
-       java_objectarray      *oa;                   /* array of declared classes */
-       s4                     i;
+       classinfo                 *c;
+       java_handle_objectarray_t *oa;
 
        c = (classinfo *) klass;
-       declaredclasscount = 0;
-
-       if (!class_is_primitive(c) && (c->name->text[0] != '[')) {
-               /* determine number of declared classes */
-
-               for (i = 0; i < c->innerclasscount; i++) {
-                       outer = c->innerclass[i].outer_class;
-
-                       /* check if outer_class is a classref or a real class and
-               get the class name from the structure */
-
-                       outername = IS_CLASSREF(outer) ? outer.ref->name : outer.cls->name;
 
-                       /* outer class is this class */
-
-                       if ((outername == c->name) &&
-                               ((publicOnly == 0) || (c->innerclass[i].flags & ACC_PUBLIC)))
-                               declaredclasscount++;
-               }
-       }
-
-       /* allocate Class[] and check for OOM */
-
-       oa = builtin_anewarray(declaredclasscount, class_java_lang_Class);
-
-       if (oa == NULL)
-               return NULL;
-
-       for (i = 0, pos = 0; i < c->innerclasscount; i++) {
-               outer = c->innerclass[i].outer_class;
-
-               /* check if outer_class is a classref or a real class and
-                  get the class name from the structure */
-
-               outername = IS_CLASSREF(outer) ? outer.ref->name : outer.cls->name;
-
-               /* outer class is this class */
-
-               if ((outername == c->name) &&
-                       ((publicOnly == 0) || (c->innerclass[i].flags & ACC_PUBLIC))) {
-                       classinfo *inner;
-
-                       if ((inner = resolve_classref_or_classinfo_eager(
-                                                                                          c->innerclass[i].inner_class,
-                                                                                          false)) == NULL)
-                               return NULL;
-
-                       if (!(inner->state & CLASS_LINKED))
-                               if (!link_class(inner))
-                                       return NULL;
-
-                       oa->data[pos++] = inner;
-               }
-       }
+       oa = class_get_declaredclasses(c, publicOnly);
 
        return oa;
 }
@@ -503,12 +432,12 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredClasses(java_lang_Class *klass,
  * Method:    getDeclaredFields
  * Signature: (Z)[Ljava/lang/reflect/Field;
  */
-java_objectarray *_Jv_java_lang_Class_getDeclaredFields(java_lang_Class *klass, s4 publicOnly)
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredFields(java_lang_Class *klass, s4 publicOnly)
 {
-       classinfo               *c;
-       java_objectarray        *oa;            /* result: array of field-objects */
-       fieldinfo               *f;
-       java_lang_reflect_Field *rf;
+       classinfo                 *c;
+       java_handle_objectarray_t *oa;          /* result: array of field-objects */
+       fieldinfo                 *f;
+       java_lang_reflect_Field   *rf;
        s4 public_fields;                    /* number of elements in field-array */
        s4 pos;
        s4 i;
@@ -540,7 +469,8 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredFields(java_lang_Class *klass,
 
                        /* store object into array */
 
-                       oa->data[pos++] = rf;
+                       LLNI_objectarray_element_set(oa, pos, rf);
+                       pos++;
                }
        }
 
@@ -553,12 +483,12 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredFields(java_lang_Class *klass,
  * Method:    getDeclaredMethods
  * Signature: (Z)[Ljava/lang/reflect/Method;
  */
-java_objectarray *_Jv_java_lang_Class_getDeclaredMethods(java_lang_Class *klass, s4 publicOnly)
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredMethods(java_lang_Class *klass, s4 publicOnly)
 {
-       classinfo                *c;
-       java_lang_reflect_Method *rm;
-       java_objectarray         *oa;          /* result: array of Method-objects */
-       methodinfo               *m;      /* the current method to be represented */
+       classinfo                 *c;
+       java_lang_reflect_Method  *rm;
+       java_handle_objectarray_t *oa;         /* result: array of Method-objects */
+       methodinfo                *m;     /* the current method to be represented */
        s4 public_methods;               /* number of public methods of the class */
        s4 pos;
        s4 i;
@@ -603,7 +533,8 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredMethods(java_lang_Class *klass,
 
                        /* store object into array */
 
-                       oa->data[pos++] = rm;
+                       LLNI_objectarray_element_set(oa, pos, rm);
+                       pos++;
                }
        }
 
@@ -616,11 +547,11 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredMethods(java_lang_Class *klass,
  * Method:    getDeclaredConstructors
  * Signature: (Z)[Ljava/lang/reflect/Constructor;
  */
-java_objectarray *_Jv_java_lang_Class_getDeclaredConstructors(java_lang_Class *klass, s4 publicOnly)
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredConstructors(java_lang_Class *klass, s4 publicOnly)
 {
        classinfo                     *c;
        methodinfo                    *m; /* the current method to be represented */
-       java_objectarray              *oa;     /* result: array of Method-objects */
+       java_handle_objectarray_t     *oa;     /* result: array of Method-objects */
        java_lang_reflect_Constructor *rc;
        s4 public_methods;               /* number of public methods of the class */
        s4 pos;
@@ -654,7 +585,8 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredConstructors(java_lang_Class *k
 
                        /* store object into array */
 
-                       oa->data[pos++] = rc;
+                       LLNI_objectarray_element_set(oa, pos, rc);
+                       pos++;
                }
        }
 
@@ -720,15 +652,16 @@ void _Jv_java_lang_Class_throwException(java_lang_Throwable *t)
  * Method:    getDeclaredAnnotations
  * Signature: (Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
  */
-java_objectarray *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass)
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass)
 {
-       classinfo                *c            = (classinfo*)klass;
+       classinfo                *c               = (classinfo*)klass;
        static methodinfo        *m_parseAnnotationsIntoArray   = NULL;
        utf                      *utf_parseAnnotationsIntoArray = NULL;
-       utf                      *utf_desc     = NULL;
-       java_bytearray           *annotations  = NULL;
-       sun_reflect_ConstantPool *constantPool = NULL;
-       uint32_t                  size         = 0;
+       utf                      *utf_desc        = NULL;
+       java_handle_bytearray_t  *annotations     = NULL;
+       sun_reflect_ConstantPool *constantPool    = NULL;
+       uint32_t                  size            = 0;
+       java_lang_Object         *constantPoolOop = (java_lang_Object*)klass;
 
        if (c == NULL) {
                exceptions_throw_nullpointerexception();
@@ -758,7 +691,7 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* kl
                return NULL;
        }
 
-       constantPool->constantPoolOop = (java_lang_Object*)klass;
+       LLNI_field_set_ref(constantPool, constantPoolOop, constantPoolOop);
 
        /* only resolve the method the first time */
        if (m_parseAnnotationsIntoArray == NULL) {
@@ -785,7 +718,7 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* kl
                }
        }
 
-       return vm_call_method(
+       return (java_handle_objectarray_t*)vm_call_method(
                m_parseAnnotationsIntoArray, NULL,
                annotations, constantPool, klass);
 }
index 4d9896e7f4f56ecaa1eccc38be4a4b51d5c80212..759d9421c7734a835ba9cc44c68668f1ffd280ae 100644 (file)
@@ -67,14 +67,14 @@ JNIEXPORT int32_t JNICALL      _Jv_java_lang_Class_isInterface(JNIEnv *env, java
 #if defined(ENABLE_JAVASE)
 s4                             _Jv_java_lang_Class_isPrimitive(java_lang_Class *klass);
 java_lang_Class               *_Jv_java_lang_Class_getSuperclass(java_lang_Class *klass);
-java_objectarray              *_Jv_java_lang_Class_getInterfaces(java_lang_Class *klass);
+java_handle_objectarray_t     *_Jv_java_lang_Class_getInterfaces(java_lang_Class *klass);
 java_lang_Class               *_Jv_java_lang_Class_getComponentType(java_lang_Class *klass);
 s4                             _Jv_java_lang_Class_getModifiers(java_lang_Class *klass, s4 ignoreInnerClassesAttrib);
 java_lang_Class               *_Jv_java_lang_Class_getDeclaringClass(java_lang_Class *klass);
-java_objectarray              *_Jv_java_lang_Class_getDeclaredClasses(java_lang_Class *klass, s4 publicOnly);
-java_objectarray              *_Jv_java_lang_Class_getDeclaredFields(java_lang_Class *klass, s4 publicOnly);
-java_objectarray              *_Jv_java_lang_Class_getDeclaredMethods(java_lang_Class *klass, s4 publicOnly);
-java_objectarray              *_Jv_java_lang_Class_getDeclaredConstructors(java_lang_Class *klass, s4 publicOnly);
+java_handle_objectarray_t     *_Jv_java_lang_Class_getDeclaredClasses(java_lang_Class *klass, s4 publicOnly);
+java_handle_objectarray_t     *_Jv_java_lang_Class_getDeclaredFields(java_lang_Class *klass, s4 publicOnly);
+java_handle_objectarray_t     *_Jv_java_lang_Class_getDeclaredMethods(java_lang_Class *klass, s4 publicOnly);
+java_handle_objectarray_t     *_Jv_java_lang_Class_getDeclaredConstructors(java_lang_Class *klass, s4 publicOnly);
 java_lang_ClassLoader         *_Jv_java_lang_Class_getClassLoader(java_lang_Class *klass);
 #endif
 
@@ -84,7 +84,7 @@ JNIEXPORT int32_t JNICALL      _Jv_java_lang_Class_isArray(JNIEnv *env, java_lan
 void                           _Jv_java_lang_Class_throwException(java_lang_Throwable *t);
 
 #if defined(WITH_CLASSPATH_GNU) && defined(ENABLE_ANNOTATIONS)
-java_objectarray              *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass);
+java_handle_objectarray_t     *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass);
 #endif
 
 java_lang_Class               *_Jv_java_lang_Class_getEnclosingClass(java_lang_Class *klass);
index bb209a3c74292e3a9ac005c5c9a2c37c3f99e8ed..3559b48770b2e0440e099fc2243808133e598729 100644 (file)
@@ -74,7 +74,7 @@
  * Method:    defineClass
  * Signature: (Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;
  */
-java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl, java_lang_String *name, java_bytearray *data, s4 offset, s4 len, java_security_ProtectionDomain *pd)
+java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl, java_lang_String *name, java_handle_bytearray_t *data, s4 offset, s4 len, java_security_ProtectionDomain *pd)
 {
        utf               *utfname;
        classinfo         *c;
@@ -95,7 +95,7 @@ java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl
 
        /* check the indexes passed */
 
-       if ((offset < 0) || (len < 0) || ((offset + len) > data->header.size)) {
+       if ((offset < 0) || (len < 0) || ((offset + len) > LLNI_array_size(data))) {
                exceptions_throw_arrayindexoutofboundsexception();
                return NULL;
        }
index 0127dd3d4ee9db9889d672c1647e267639e9a5a2..33364bbe11d91fe2539130a37310fd61e7eab532 100644 (file)
@@ -50,7 +50,7 @@
 /* function prototypes ********************************************************/
 
 #if defined(ENABLE_JAVASE)
-java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl, java_lang_String *name, java_bytearray *data, s4 offset, s4 len, java_security_ProtectionDomain *pd);
+java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl, java_lang_String *name, java_handle_bytearray_t *data, s4 offset, s4 len, java_security_ProtectionDomain *pd);
 #endif
 
 #endif /* _JV_JAVA_LANG_CLASSLOADER_H */
index 7e48c32e91f1205bd7cfd248e9732403c061e4ba..b532a520fb03b68947695e2503a3abe577ed71e9 100644 (file)
@@ -54,7 +54,7 @@
  * Method:    invoke
  * Signature: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
  */
-java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *this, java_lang_Object *o, java_objectarray *args)
+java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *this, java_lang_Object *o, java_handle_objectarray_t *args)
 {
        classinfo  *c;
        methodinfo *m;
index 516591bc85be6ed30157e81f2190528a2a269261..85fa518fbe10c65e08f36675d664c60df5123860 100644 (file)
@@ -45,7 +45,7 @@
 
 /* function prototypes ********************************************************/
 
-java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *this, java_lang_Object *o, java_objectarray *args);
+java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *this, java_lang_Object *o, java_handle_objectarray_t *args);
 
 #endif /* _JV_JAVA_LANG_REFLECT_METHOD_H */
 
index 11ec8c5c448d21d68626cf63bc7c6379a64fad19..42ce71ac1c604e3507165169d9c66ee41b5db56e 100644 (file)
@@ -535,7 +535,7 @@ JNIEXPORT int32_t JNICALL Java_sun_misc_Unsafe_addressSize(JNIEnv *env, sun_misc
  * Method:    defineClass
  * Signature: (Ljava/lang/String;[BIILjava/lang/ClassLoader;Ljava/security/ProtectionDomain;)Ljava/lang/Class;
  */
-JNIEXPORT java_lang_Class* JNICALL Java_sun_misc_Unsafe_defineClass__Ljava_lang_String_2_3BIILjava_lang_ClassLoader_2Ljava_security_ProtectionDomain_2(JNIEnv *env, sun_misc_Unsafe *this, java_lang_String *name, java_bytearray *b, int32_t off, int32_t len, java_lang_ClassLoader *loader, java_security_ProtectionDomain *protectionDomain)
+JNIEXPORT java_lang_Class* JNICALL Java_sun_misc_Unsafe_defineClass__Ljava_lang_String_2_3BIILjava_lang_ClassLoader_2Ljava_security_ProtectionDomain_2(JNIEnv *env, sun_misc_Unsafe *this, java_lang_String *name, java_handle_bytearray_t *b, int32_t off, int32_t len, java_lang_ClassLoader *loader, java_security_ProtectionDomain *protectionDomain)
 {
        classloader     *cl;
        utf             *utfname;
@@ -553,7 +553,7 @@ JNIEXPORT java_lang_Class* JNICALL Java_sun_misc_Unsafe_defineClass__Ljava_lang_
 
        /* check the indexes passed */
 
-       if ((off < 0) || (len < 0) || ((off + len) > b->header.size)) {
+       if ((off < 0) || (len < 0) || ((off + len) > LLNI_array_size(b))) {
                exceptions_throw_arrayindexoutofboundsexception();
                return NULL;
        }
index 035b96bcd40d1952e46dac08e4282d0a999fc345..09985a6cfa7cdb90dcb39ba19070da5758e785b8 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: threads.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: threads.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -709,6 +709,11 @@ void threads_impl_thread_new(threadobject *t)
        t->filterverbosecallctr[0] = 0;
        t->filterverbosecallctr[1] = 0;
 #endif
+
+#if !defined(NDEBUG)
+       t->tracejavacallindent = 0;
+       t->tracejavacallcount = 0;
+#endif
 }
 
 
index dc6c22066fb0077d27fde7cc65a7a8115fbf6552..03c52bbd96f3777bfb51a28d16c36ed51308c2d5 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: threads.h 8299 2007-08-13 08:41:18Z michi $
+   $Id: threads.h 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -162,6 +162,11 @@ struct threadobject {
        u2                    filterverbosecallctr[2]; /* counters for verbose call filter */
 #endif
 
+#if !defined(NDEBUG)
+       s4                    tracejavacallindent;
+       u4                    tracejavacallcount;
+#endif
+
        listnode_t            linkage;      /* threads-list                       */
 };
 
@@ -181,6 +186,13 @@ struct threadobject {
 #      define FILTERVERBOSECALLCTR (THREADOBJECT->filterverbosecallctr)
 #endif
 
+/* state for trace java call **************************************************/
+
+#if !defined(NDEBUG)
+#      define TRACEJAVACALLINDENT (THREADOBJECT->tracejavacallindent)
+#      define TRACEJAVACALLCOUNT (THREADOBJECT->tracejavacallcount)
+#endif
+
 /* functions ******************************************************************/
 
 void threads_sem_init(sem_t *sem, bool shared, int value);
index 044bc32598253bc5ff8ed0d6c5341adeab5f2cd9..e8b06e9139103f2ec431fd5e9c4d5fd2e8c23767 100644 (file)
@@ -64,6 +64,16 @@ extern u2 _no_threads_filterverbosecallctr[2];
 #define FILTERVERBOSECALLCTR (_no_threads_filterverbosecallctr)
 #endif
 
+/* state for trace java call **************************************************/
+
+#if !defined(NDEBUG)
+extern s4 _no_threads_tracejavacallindent;
+#define TRACEJAVACALLINDENT (_no_threads_tracejavacallindent)
+
+extern u4 _no_threads_tracejavacallcount;
+#define TRACEJAVACALLCOUNT (_no_threads_tracejavacallcount)
+#endif
+
 #endif /* _THREADS_H */
 
 
index 70acfc38e9d2b567b41f3f0f916d4ca7913d13ca..984f8d002d029966bc6712e93cc38747de8d1b5e 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: access.c 8237 2007-07-27 16:15:29Z twisti $
+   $Id: access.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -36,6 +36,8 @@
 
 #include "mm/memory.h"
 
+#include "native/llni.h"
+
 #include "vm/access.h"
 #include "vm/builtin.h"
 #include "vm/exceptions.h"
@@ -213,11 +215,11 @@ bool access_is_accessible_member(classinfo *referer, classinfo *declarer,
 
 bool access_check_field(fieldinfo *f, s4 calldepth)
 {
-       java_objectarray *oa;
-       classinfo        *callerclass;
-       char             *msg;
-       s4                msglen;
-       utf              *u;
+       java_handle_objectarray_t *oa;
+       classinfo                 *callerclass;
+       char                      *msg;
+       s4                         msglen;
+       utf                       *u;
 
        /* if everything is public, there is nothing to check */
 
@@ -231,7 +233,7 @@ bool access_check_field(fieldinfo *f, s4 calldepth)
        if (oa == NULL)
                return false;
 
-       assert(calldepth >= 0 && calldepth < oa->header.size);
+       assert(calldepth >= 0 && calldepth < LLNI_array_size(oa));
 
        callerclass = (classinfo *) oa->data[calldepth];
 
@@ -294,11 +296,11 @@ bool access_check_field(fieldinfo *f, s4 calldepth)
 
 bool access_check_method(methodinfo *m, s4 calldepth)
 {
-       java_objectarray *oa;
-       classinfo        *callerclass;
-       char             *msg;
-       s4                msglen;
-       utf              *u;
+       java_handle_objectarray_t *oa;
+       classinfo                 *callerclass;
+       char                      *msg;
+       s4                         msglen;
+       utf                       *u;
 
        /* if everything is public, there is nothing to check */
 
@@ -312,7 +314,7 @@ bool access_check_method(methodinfo *m, s4 calldepth)
        if (oa == NULL)
                return false;
 
-       assert(calldepth >= 0 && calldepth < oa->header.size);
+       assert(calldepth >= 0 && calldepth < LLNI_array_size(oa));
 
        callerclass = (classinfo *) oa->data[calldepth];
 
index cb958cc05930393e402482f0d0d8b84fccad46dd..2286c40f7499f94b5adc8a477c3d35f6713d114a 100644 (file)
@@ -28,7 +28,7 @@
    calls instead of machine instructions, using the C calling
    convention.
 
-   $Id: builtin.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: builtin.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -604,7 +604,7 @@ void *builtin_throw_exception(java_handle_t *xptr)
 
 *******************************************************************************/
 
-s4 builtin_canstore(java_objectarray *oa, java_handle_t *o)
+s4 builtin_canstore(java_handle_objectarray_t *oa, java_handle_t *o)
 {
        arraydescriptor *desc;
        arraydescriptor *valuedesc;
@@ -679,7 +679,7 @@ s4 builtin_canstore(java_objectarray *oa, java_handle_t *o)
 
 
 /* This is an optimized version where a is guaranteed to be one-dimensional */
-s4 builtin_canstore_onedim (java_objectarray *a, java_handle_t *o)
+s4 builtin_canstore_onedim (java_handle_objectarray_t *a, java_handle_t *o)
 {
        arraydescriptor *desc;
        vftbl_t         *elementvftbl;
@@ -730,7 +730,7 @@ s4 builtin_canstore_onedim (java_objectarray *a, java_handle_t *o)
 
 /* This is an optimized version where a is guaranteed to be a
  * one-dimensional array of a class type */
-s4 builtin_canstore_onedim_class(java_objectarray *a, java_handle_t *o)
+s4 builtin_canstore_onedim_class(java_handle_objectarray_t *a, java_handle_t *o)
 {
        vftbl_t  *elementvftbl;
        vftbl_t  *valuevftbl;
@@ -909,13 +909,13 @@ java_objectheader *builtin_fast_new(classinfo *c)
 
 *******************************************************************************/
 
-java_arrayheader *builtin_newarray(s4 size, classinfo *arrayclass)
+java_handle_t *builtin_newarray(s4 size, classinfo *arrayclass)
 {
-       arraydescriptor  *desc;
-       s4                dataoffset;
-       s4                componentsize;
-       s4                actualsize;
-       java_arrayheader *a;
+       arraydescriptor *desc;
+       s4               dataoffset;
+       s4               componentsize;
+       s4               actualsize;
+       java_array_t    *a;
 #if defined(ENABLE_RT_TIMING)
        struct timespec time_start, time_end;
 #endif
@@ -951,7 +951,7 @@ java_arrayheader *builtin_newarray(s4 size, classinfo *arrayclass)
        lock_init_object_lock(&a->objheader);
 #endif
 
-       a->size = size;
+       LLNI_array_size(a) = size;
 
        RT_TIMING_GET_TIME(time_end);
        RT_TIMING_TIME_DIFF(time_start, time_end, RT_TIMING_NEW_ARRAY);
@@ -969,7 +969,7 @@ java_arrayheader *builtin_newarray(s4 size, classinfo *arrayclass)
 
 *******************************************************************************/
 
-java_objectarray *builtin_anewarray(s4 size, classinfo *componentclass)
+java_handle_objectarray_t *builtin_anewarray(s4 size, classinfo *componentclass)
 {
        classinfo *arrayclass;
        
@@ -988,7 +988,7 @@ java_objectarray *builtin_anewarray(s4 size, classinfo *componentclass)
        if (!arrayclass)
                return NULL;
 
-       return (java_objectarray *) builtin_newarray(size, arrayclass);
+       return (java_handle_objectarray_t *) builtin_newarray(size, arrayclass);
 }
 
 
@@ -1002,9 +1002,9 @@ java_objectarray *builtin_anewarray(s4 size, classinfo *componentclass)
 
 *******************************************************************************/
 
-java_booleanarray *builtin_newarray_boolean(s4 size)
+java_handle_booleanarray_t *builtin_newarray_boolean(s4 size)
 {
-       return (java_booleanarray *)
+       return (java_handle_booleanarray_t *)
                builtin_newarray(size,
                                                 primitivetype_table[ARRAYTYPE_BOOLEAN].arrayclass);
 }
@@ -1019,9 +1019,9 @@ java_booleanarray *builtin_newarray_boolean(s4 size)
 
 *******************************************************************************/
 
-java_bytearray *builtin_newarray_byte(s4 size)
+java_handle_bytearray_t *builtin_newarray_byte(s4 size)
 {
-       return (java_bytearray *)
+       return (java_handle_bytearray_t *)
                builtin_newarray(size, primitivetype_table[ARRAYTYPE_BYTE].arrayclass);
 }
 
@@ -1035,9 +1035,9 @@ java_bytearray *builtin_newarray_byte(s4 size)
 
 *******************************************************************************/
 
-java_chararray *builtin_newarray_char(s4 size)
+java_handle_chararray_t *builtin_newarray_char(s4 size)
 {
-       return (java_chararray *)
+       return (java_handle_chararray_t *)
                builtin_newarray(size, primitivetype_table[ARRAYTYPE_CHAR].arrayclass);
 }
 
@@ -1051,9 +1051,9 @@ java_chararray *builtin_newarray_char(s4 size)
 
 *******************************************************************************/
 
-java_shortarray *builtin_newarray_short(s4 size)
+java_handle_shortarray_t *builtin_newarray_short(s4 size)
 {
-       return (java_shortarray *)
+       return (java_handle_shortarray_t *)
                builtin_newarray(size, primitivetype_table[ARRAYTYPE_SHORT].arrayclass);
 }
 
@@ -1067,9 +1067,9 @@ java_shortarray *builtin_newarray_short(s4 size)
 
 *******************************************************************************/
 
-java_intarray *builtin_newarray_int(s4 size)
+java_handle_intarray_t *builtin_newarray_int(s4 size)
 {
-       return (java_intarray *)
+       return (java_handle_intarray_t *)
                builtin_newarray(size, primitivetype_table[ARRAYTYPE_INT].arrayclass);
 }
 
@@ -1083,9 +1083,9 @@ java_intarray *builtin_newarray_int(s4 size)
 
 *******************************************************************************/
 
-java_longarray *builtin_newarray_long(s4 size)
+java_handle_longarray_t *builtin_newarray_long(s4 size)
 {
-       return (java_longarray *)
+       return (java_handle_longarray_t *)
                builtin_newarray(size, primitivetype_table[ARRAYTYPE_LONG].arrayclass);
 }
 
@@ -1099,9 +1099,9 @@ java_longarray *builtin_newarray_long(s4 size)
 
 *******************************************************************************/
 
-java_floatarray *builtin_newarray_float(s4 size)
+java_handle_floatarray_t *builtin_newarray_float(s4 size)
 {
-       return (java_floatarray *)
+       return (java_handle_floatarray_t *)
                builtin_newarray(size, primitivetype_table[ARRAYTYPE_FLOAT].arrayclass);
 }
 
@@ -1115,9 +1115,9 @@ java_floatarray *builtin_newarray_float(s4 size)
 
 *******************************************************************************/
 
-java_doublearray *builtin_newarray_double(s4 size)
+java_handle_doublearray_t *builtin_newarray_double(s4 size)
 {
-       return (java_doublearray *)
+       return (java_handle_doublearray_t *)
                builtin_newarray(size,
                                                 primitivetype_table[ARRAYTYPE_DOUBLE].arrayclass);
 }
@@ -1138,19 +1138,19 @@ java_doublearray *builtin_newarray_double(s4 size)
 
 ******************************************************************************/
 
-static java_arrayheader *builtin_multianewarray_intern(int n,
-                                                                                                          classinfo *arrayclass,
-                                                                                                          long *dims)
+static java_handle_t *builtin_multianewarray_intern(int n,
+                                                                                                       classinfo *arrayclass,
+                                                                                                       long *dims)
 {
-       s4                size;
-       java_arrayheader *a;
-       classinfo        *componentclass;
-       s4                i;
+       s4             size;
+       java_handle_t *a;
+       classinfo     *componentclass;
+       s4             i;
 
        /* create this dimension */
 
        size = (s4) dims[0];
-       a = builtin_newarray(size, arrayclass);
+       a = builtin_newarray(size, arrayclass);
 
        if (!a)
                return NULL;
@@ -1169,7 +1169,7 @@ static java_arrayheader *builtin_multianewarray_intern(int n,
        /* create the component arrays */
 
        for (i = 0; i < size; i++) {
-               java_arrayheader *ea =
+               java_handle_t *ea =
 #if defined(__MIPS__) && (SIZEOF_VOID_P == 4)
                        /* we save an s4 to a s8 slot, 8-byte aligned */
 
@@ -1181,7 +1181,7 @@ static java_arrayheader *builtin_multianewarray_intern(int n,
                if (!ea)
                        return NULL;
                
-               ((java_objectarray *) a)->data[i] = (java_object_t *) ea;
+               ((java_handle_objectarray_t *) a)->data[i] = (java_object_t *) ea;
        }
 
        return a;
@@ -1195,8 +1195,8 @@ static java_arrayheader *builtin_multianewarray_intern(int n,
 
 ******************************************************************************/
 
-java_arrayheader *builtin_multianewarray(int n, classinfo *arrayclass,
-                                                                                long *dims)
+java_handle_objectarray_t *builtin_multianewarray(int n, classinfo *arrayclass,
+                                                                                                 long *dims)
 {
        s4 i;
        s4 size;
@@ -2635,8 +2635,8 @@ float builtin_d2f(double a)
 
 *******************************************************************************/
 
-bool builtin_arraycopy(java_arrayheader *src, s4 srcStart,
-                                          java_arrayheader *dest, s4 destStart, s4 len)
+bool builtin_arraycopy(java_handle_t *src, s4 srcStart,
+                                          java_handle_t *dest, s4 destStart, s4 len)
 {
        arraydescriptor *sdesc;
        arraydescriptor *ddesc;
@@ -2647,8 +2647,8 @@ bool builtin_arraycopy(java_arrayheader *src, s4 srcStart,
                return false;
        }
 
-       sdesc = src->objheader.vftbl->arraydesc;
-       ddesc = dest->objheader.vftbl->arraydesc;
+       sdesc = LLNI_vftbl_direct(src)->arraydesc;
+       ddesc = LLNI_vftbl_direct(dest)->arraydesc;
 
        if (!sdesc || !ddesc || (sdesc->arraytype != ddesc->arraytype)) {
                exceptions_throw_arraystoreexception();
@@ -2658,8 +2658,8 @@ bool builtin_arraycopy(java_arrayheader *src, s4 srcStart,
        /* we try to throw exception with the same message as SUN does */
 
        if ((len < 0) || (srcStart < 0) || (destStart < 0) ||
-               (srcStart  + len < 0) || (srcStart  + len > src->size) ||
-               (destStart + len < 0) || (destStart + len > dest->size)) {
+               (srcStart  + len < 0) || (srcStart  + len > LLNI_array_size(src)) ||
+               (destStart + len < 0) || (destStart + len > LLNI_array_size(dest))) {
                exceptions_throw_arrayindexoutofboundsexception();
                return false;
        }
@@ -2677,8 +2677,8 @@ bool builtin_arraycopy(java_arrayheader *src, s4 srcStart,
        else {
                /* We copy references of different type */
 
-               java_objectarray *oas = (java_objectarray *) src;
-               java_objectarray *oad = (java_objectarray *) dest;
+               java_handle_objectarray_t *oas = (java_handle_objectarray_t *) src;
+               java_handle_objectarray_t *oad = (java_handle_objectarray_t *) dest;
                 
                if (destStart <= srcStart) {
                        for (i = 0; i < len; i++) {
@@ -2756,11 +2756,11 @@ s8 builtin_currenttimemillis(void)
 
 java_handle_t *builtin_clone(void *env, java_handle_t *o)
 {
-       arraydescriptor   *ad;
-       java_arrayheader  *ah;
-       u4                 size;
-       classinfo         *c;
-       java_handle_t     *co;              /* cloned object header               */
+       arraydescriptor *ad;
+       java_handle_t   *ah;
+       u4               size;
+       classinfo       *c;
+       java_handle_t   *co;                /* cloned object header               */
 
        /* get the array descriptor */
 
@@ -2769,9 +2769,9 @@ java_handle_t *builtin_clone(void *env, java_handle_t *o)
        /* we are cloning an array */
 
        if (ad != NULL) {
-               ah = (java_arrayheader *) o;
+               ah = (java_handle_t *) o;
 
-               size = ad->dataoffset + ad->componentsize * ah->size;
+               size = ad->dataoffset + ad->componentsize * LLNI_array_size(ah);
         
                co = heap_alloc(size, (ad->arraytype == ARRAYTYPE_OBJECT), NULL, true);
 
index 0b4dc18c99bc3d5c15f6f25154bdfaff87a7d5de..64ade7a298c48782ff396fd46c5fbbd6672ce6af 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: builtin.h 8299 2007-08-13 08:41:18Z michi $
+   $Id: builtin.h 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -144,34 +144,34 @@ java_handle_t *builtin_new(classinfo *c);
 java_objectheader *builtin_fast_new(classinfo *c);
 #define BUILTIN_FAST_new (functionptr) builtin_fast_new
 
-java_arrayheader *builtin_newarray(s4 size, classinfo *arrayclass);
+java_handle_t *builtin_newarray(s4 size, classinfo *arrayclass);
 #define BUILTIN_newarray (functionptr) builtin_newarray
 
-java_objectarray *builtin_anewarray(s4 size, classinfo *componentclass);
+java_handle_objectarray_t *builtin_anewarray(s4 size, classinfo *componentclass);
 #define BUILTIN_anewarray (functionptr) builtin_anewarray
 
-java_booleanarray *builtin_newarray_boolean(s4 size);
+java_handle_booleanarray_t *builtin_newarray_boolean(s4 size);
 #define BUILTIN_newarray_boolean (functionptr) builtin_newarray_boolean
-java_chararray *builtin_newarray_char(s4 size);
+java_handle_chararray_t *builtin_newarray_char(s4 size);
 #define BUILTIN_newarray_char (functionptr) builtin_newarray_char
-java_floatarray *builtin_newarray_float(s4 size);
+java_handle_floatarray_t *builtin_newarray_float(s4 size);
 #define BUILTIN_newarray_float (functionptr) builtin_newarray_float
-java_doublearray *builtin_newarray_double(s4 size);
+java_handle_doublearray_t *builtin_newarray_double(s4 size);
 #define BUILTIN_newarray_double (functionptr) builtin_newarray_double
-java_bytearray *builtin_newarray_byte(s4 size);
+java_handle_bytearray_t *builtin_newarray_byte(s4 size);
 #define BUILTIN_newarray_byte (functionptr) builtin_newarray_byte
-java_shortarray *builtin_newarray_short(s4 size);
+java_handle_shortarray_t *builtin_newarray_short(s4 size);
 #define BUILTIN_newarray_short (functionptr) builtin_newarray_short
-java_intarray *builtin_newarray_int(s4 size);
+java_handle_intarray_t *builtin_newarray_int(s4 size);
 #define BUILTIN_newarray_int (functionptr) builtin_newarray_int
-java_longarray *builtin_newarray_long(s4 size);
+java_handle_longarray_t *builtin_newarray_long(s4 size);
 #define BUILTIN_newarray_long (functionptr) builtin_newarray_long
 
-java_arrayheader *builtin_multianewarray(int n, classinfo *arrayclass,
-                                                                                long *dims);
+java_handle_objectarray_t *builtin_multianewarray(int n, classinfo *arrayclass,
+                                                                                                 long *dims);
 #define BUILTIN_multianewarray (functionptr) builtin_multianewarray
 
-s4 builtin_canstore(java_objectarray *oa, java_handle_t *o);
+s4 builtin_canstore(java_handle_objectarray_t *oa, java_handle_t *o);
 #define BUILTIN_canstore (functionptr) builtin_canstore
 
 #if defined(TRACE_ARGS_NUM)
@@ -300,8 +300,8 @@ float    builtin_d2f(double a);
 java_handle_t *builtin_clone(void *env, java_handle_t *o);
 #define BUILTIN_clone (functionptr) builtin_clone
 
-bool builtin_arraycopy(java_arrayheader *src, s4 srcStart,
-                                          java_arrayheader *dest, s4 destStart, s4 len);
+bool builtin_arraycopy(java_handle_t *src, s4 srcStart,
+                                          java_handle_t *dest, s4 destStart, s4 len);
 #define BUILTIN_arraycopy (functionptr) builtin_arraycopy
 
 s8 builtin_nanotime(void);
index e8e44651eea2472bbaf60a89933e72e83fb01045..3b2859d8b76a6e9151da7a420c6eeece18a83c88 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: exceptions.c 8296 2007-08-11 22:38:38Z pm $
+   $Id: exceptions.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -107,8 +107,8 @@ bool exceptions_init(void)
 
        /* check if we get into trouble with our hardware-exceptions */
 
-       if (OFFSET(java_bytearray, data) <= EXCEPTION_HARDWARE_LARGEST)
-               vm_abort("signal_init: array-data offset is less or equal the maximum hardware-exception displacement: %d <= %d", OFFSET(java_bytearray, data), EXCEPTION_HARDWARE_LARGEST);
+       if (OFFSET(java_bytearray_t, data) <= EXCEPTION_HARDWARE_LARGEST)
+               vm_abort("signal_init: array-data offset is less or equal the maximum hardware-exception displacement: %d <= %d", OFFSET(java_bytearray_t, data), EXCEPTION_HARDWARE_LARGEST);
 
        /* java/lang/Throwable */
 
@@ -1947,7 +1947,7 @@ void exceptions_print_exception(java_handle_t *xptr)
        }
 
 #if defined(ENABLE_JAVASE)
-       LLNI_field_set_ref(t, cause, cause);
+       LLNI_field_get_ref(t, cause, cause);
 #endif
 
        /* print the root exception */
index 07963d38f52aa19ffe58b744bad7397afd0a8a67..87f82d742942f4da6f7fe7aba043d8dd475242f5 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: global.h 8299 2007-08-13 08:41:18Z michi $
+   $Id: global.h 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -82,7 +82,7 @@ typedef union {
 /* forward typedefs ***********************************************************/
 
 typedef struct java_object_t java_object_t; 
-typedef struct java_objectarray java_objectarray;
+typedef struct java_objectarray_t java_objectarray_t;
 
 
 #define MAX_ALIGN 8             /* most generic alignment for JavaVM values   */
@@ -224,15 +224,6 @@ struct java_object_t {                 /* header for all objects              */
 };
 
 
-#if 0
-typedef struct java_handle_t {
-       java_object_t *heap_object;
-} java_handle_t;
-#else
-typedef java_object_t java_handle_t;
-#endif
-
-
 /* arrays **********************************************************************
 
        All arrays are objects (they need the object header with a pointer
@@ -241,10 +232,10 @@ typedef java_object_t java_handle_t;
        which is referenced by the vftbl.
 */
 
-typedef struct java_arrayheader {       /* header for all arrays              */
+typedef struct java_array_t {           /* header for all arrays              */
        java_object_t objheader;            /* object header                      */
        s4 size;                            /* array size                         */
-} java_arrayheader;
+} java_array_t;
 
 
 
@@ -253,55 +244,84 @@ typedef struct java_arrayheader {       /* header for all arrays              */
 /*  booleanarray and bytearray need identical memory layout (access methods
     use the same machine code */
 
-typedef struct java_booleanarray {
-       java_arrayheader header;
+typedef struct java_booleanarray_t {
+       java_array_t header;
        u1 data[1];
-} java_booleanarray;
+} java_booleanarray_t;
 
-typedef struct java_bytearray {
-       java_arrayheader header;
+typedef struct java_bytearray_t {
+       java_array_t header;
        s1 data[1];
-} java_bytearray;
+} java_bytearray_t;
 
-typedef struct java_chararray {
-       java_arrayheader header;
+typedef struct java_chararray_t {
+       java_array_t header;
        u2 data[1];
-} java_chararray;
+} java_chararray_t;
 
-typedef struct java_shortarray {
-       java_arrayheader header;
+typedef struct java_shortarray_t {
+       java_array_t header;
        s2 data[1];
-} java_shortarray;
+} java_shortarray_t;
 
-typedef struct java_intarray {
-       java_arrayheader header;
+typedef struct java_intarray_t {
+       java_array_t header;
        s4 data[1];
-} java_intarray;
+} java_intarray_t;
 
-typedef struct java_longarray {
-       java_arrayheader header;
+typedef struct java_longarray_t {
+       java_array_t header;
        s8 data[1];
-} java_longarray;
+} java_longarray_t;
 
-typedef struct java_floatarray {
-       java_arrayheader header;
+typedef struct java_floatarray_t {
+       java_array_t header;
        float data[1];
-} java_floatarray;
+} java_floatarray_t;
 
-typedef struct java_doublearray {
-       java_arrayheader header;
+typedef struct java_doublearray_t {
+       java_array_t header;
        double data[1];
-} java_doublearray;
+} java_doublearray_t;
 
 /*  objectarray and arrayarray need identical memory layout (access methods
     use the same machine code */
 
-struct java_objectarray {
-       java_arrayheader  header;
-       java_object_t    *data[1];
+struct java_objectarray_t {
+       java_array_t   header;
+       java_object_t *data[1];
 };
 
 
+/* java_handle_t ***************************************************************
+
+   TODO: document me!
+
+*******************************************************************************/
+
+#if 0
+typedef struct java_handle_t {
+       java_object_t *heap_object;
+} java_handle_t;
+#elseif 0
+typedef union {
+       java_object_t    object;
+       java_array_t     array;
+} java_handle_t;
+#else
+typedef java_object_t       java_handle_t;
+typedef java_objectarray_t  java_handle_objectarray_t;
+typedef java_booleanarray_t java_handle_booleanarray_t;
+typedef java_bytearray_t    java_handle_bytearray_t;
+typedef java_chararray_t    java_handle_chararray_t;
+typedef java_shortarray_t   java_handle_shortarray_t;
+typedef java_intarray_t     java_handle_intarray_t;
+typedef java_longarray_t    java_handle_longarray_t;
+typedef java_floatarray_t   java_handle_floatarray_t;
+typedef java_doublearray_t  java_handle_doublearray_t;
+#endif
+
+
 /* global constants related to the verifier ***********************************/
 
 /* The verifier needs additional variables in the variable array. Since these */
index 65b45aa90ae50d4c1bc36c7bb0024496b480d08e..2ea63caecb5072ef4dc46e94ed4fac63a2e5b3d9 100644 (file)
@@ -22,7 +22,7 @@
 ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 ## 02110-1301, USA.
 ##
-## $Id: Makefile.am 8274 2007-08-08 15:58:17Z twisti $
+## $Id: Makefile.am 8304 2007-08-14 19:57:20Z pm $
 
 ## Process this file with automake to produce Makefile.in
 
@@ -166,7 +166,9 @@ libjit_la_SOURCES = \
        show.h \
        $(STACK_SOURCES) \
        stacktrace.c \
-       stacktrace.h
+       stacktrace.h \
+       trace.c \
+       trace.h
 
 libjit_la_SOURCES += \
        cfg.c \
index c5c557bc390efc42f0a228902a4f38dff63ca823..8449ce8a973e323334b0b90e34add1ff83f77e63 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
    02111-1307, USA.
 
-   $Id: simplereg.c 8210 2007-07-18 12:51:00Z twisti $
+   $Id: simplereg.c 8320 2007-08-16 11:35:14Z michi $
 
 */
 
@@ -30,6 +30,7 @@
 #include "config.h"
 
 #include <assert.h>
+#include <stdint.h>
 
 #include "vm/types.h"
 
@@ -1177,13 +1178,15 @@ static void simplereg_free(registerdata *rd, s4 flags, s4 regoff, s4 type)
        /* if this is a copy of another variable, just decrement the copy counter */
 
        if (flags & INMEMORY) {
+               int32_t memindex;
+
                if (flags & INOUT)
                        return;
 
-               #warning this will be more efficient if we divide it by SIZE_OF_STACKSLOT
+               memindex = regoff / SIZE_OF_STACKSLOT;
 
-               if (regoff < rd->memcopycountsize && rd->memcopycount[regoff]) {
-                       rd->memcopycount[regoff]--;
+               if (memindex < rd->memcopycountsize && rd->memcopycount[memindex]) {
+                       rd->memcopycount[memindex]--;
                        return;
                }
        }
@@ -1610,14 +1613,15 @@ static void simplereg_allocate_temporaries(jitdata *jd)
                                                v = VAROP(iptr->dst);
 
                                                if (v->flags & INMEMORY) {
-                                                       if (v->vv.regoff >= rd->memcopycountsize) {
-                                                               int newsize = (v->vv.regoff + 1) * 2;
+                                                       int32_t memindex = v->vv.regoff / SIZE_OF_STACKSLOT;
+                                                       if (memindex >= rd->memcopycountsize) {
+                                                               int newsize = (memindex + 1) * 2;
                                                                i = rd->memcopycountsize;
                                                                rd->memcopycount = DMREALLOC(rd->memcopycount, int, i, newsize);
                                                                MZERO(rd->memcopycount + i, int, newsize - i);
                                                                rd->memcopycountsize = newsize;
                                                        }
-                                                       rd->memcopycount[v->vv.regoff]++;
+                                                       rd->memcopycount[memindex]++;
                                                }
                                                else {
                                                        /* XXX split reg/mem variables on arm may need special handling here */
index fa54d8e8f9291773e83b5ad9faf43305ea2a8ee8..a56dc0b522fabcb124c7f7c3a168d96659ff87eb 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: codegen.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -1419,7 +1419,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ITMP1);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        /* implicit null-pointer check */
-                       M_ILD(d, s1, OFFSET(java_arrayheader, size));
+                       M_ILD(d, s1, OFFSET(java_array_t, size));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1432,13 +1432,13 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        if (has_ext_instr_set) {
                                M_LADD(s2, s1, REG_ITMP1);
-                               M_BLDU(d, REG_ITMP1, OFFSET (java_bytearray, data[0]));
+                               M_BLDU(d, REG_ITMP1, OFFSET (java_bytearray_t, data[0]));
                                M_BSEXT(d, d);
                        }
                        else {
                                M_LADD(s2, s1, REG_ITMP1);
-                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray, data[0]));
-                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray, data[0])+1);
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
+                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray_t, data[0])+1);
                                M_EXTQH(REG_ITMP2, REG_ITMP1, d);
                                M_SRA_IMM(d, 56, d);
                        }
@@ -1455,13 +1455,13 @@ bool codegen_emit(jitdata *jd)
                        if (has_ext_instr_set) {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_SLDU(d, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               M_SLDU(d, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                        }
                        else {
                                M_LADD (s2, s1, REG_ITMP1);
                                M_LADD (s2, REG_ITMP1, REG_ITMP1);
-                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray, data[0]));
-                               M_LDA  (REG_ITMP1, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
+                               M_LDA  (REG_ITMP1, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                                M_EXTWL(REG_ITMP2, REG_ITMP1, d);
                        }
                        emit_store_dst(jd, iptr, d);
@@ -1477,13 +1477,13 @@ bool codegen_emit(jitdata *jd)
                        if (has_ext_instr_set) {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_SLDU( d, REG_ITMP1, OFFSET (java_shortarray, data[0]));
+                               M_SLDU( d, REG_ITMP1, OFFSET (java_shortarray_t, data[0]));
                                M_SSEXT(d, d);
                        } else {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray, data[0]));
-                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray, data[0])+2);
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
+                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray_t, data[0])+2);
                                M_EXTQH(REG_ITMP2, REG_ITMP1, d);
                                M_SRA_IMM(d, 48, d);
                        }
@@ -1498,7 +1498,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_S4ADDQ(s2, s1, REG_ITMP1);
-                       M_ILD(d, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       M_ILD(d, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1510,7 +1510,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_S8ADDQ(s2, s1, REG_ITMP1);
-                       M_LLD(d, REG_ITMP1, OFFSET(java_longarray, data[0]));
+                       M_LLD(d, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1522,7 +1522,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_S4ADDQ(s2, s1, REG_ITMP1);
-                       M_FLD(d, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+                       M_FLD(d, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1534,7 +1534,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_S8ADDQ(s2, s1, REG_ITMP1);
-                       M_DLD(d, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+                       M_DLD(d, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1546,7 +1546,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SAADDQ(s2, s1, REG_ITMP1);
-                       M_ALD(d, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       M_ALD(d, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1560,12 +1560,12 @@ bool codegen_emit(jitdata *jd)
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        if (has_ext_instr_set) {
                                M_LADD(s2, s1, REG_ITMP1);
-                               M_BST(s3, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                               M_BST(s3, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
                        }
                        else {
                                M_LADD(s2, s1, REG_ITMP1);
-                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray, data[0]));
-                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
+                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
                                M_INSBL(s3, REG_ITMP1, REG_ITMP3);
                                M_MSKBL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
                                M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
@@ -1583,13 +1583,13 @@ bool codegen_emit(jitdata *jd)
                        if (has_ext_instr_set) {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_SST(s3, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               M_SST(s3, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                        }
                        else {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray, data[0]));
-                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
+                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                                M_INSWL(s3, REG_ITMP1, REG_ITMP3);
                                M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
                                M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
@@ -1607,13 +1607,13 @@ bool codegen_emit(jitdata *jd)
                        if (has_ext_instr_set) {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_SST(s3, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+                               M_SST(s3, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
                        }
                        else {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray, data[0]));
-                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
+                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
                                M_INSWL(s3, REG_ITMP1, REG_ITMP3);
                                M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
                                M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
@@ -1629,7 +1629,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_S4ADDQ(s2, s1, REG_ITMP1);
-                       M_IST(s3, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       M_IST(s3, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
                        break;
 
                case ICMD_LASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1640,7 +1640,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_S8ADDQ(s2, s1, REG_ITMP1);
-                       M_LST(s3, REG_ITMP1, OFFSET(java_longarray, data[0]));
+                       M_LST(s3, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
                        break;
 
                case ICMD_FASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1651,7 +1651,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP3);
                        M_S4ADDQ(s2, s1, REG_ITMP1);
-                       M_FST(s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+                       M_FST(s3, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
                        break;
 
                case ICMD_DASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1662,7 +1662,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP3);
                        M_S8ADDQ(s2, s1, REG_ITMP1);
-                       M_DST(s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+                       M_DST(s3, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
                        break;
 
                case ICMD_AASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1687,7 +1687,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_SAADDQ(s2, s1, REG_ITMP1);
-                       M_AST(s3, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       M_AST(s3, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
                        break;
 
 
@@ -1699,12 +1699,12 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        if (has_ext_instr_set) {
                                M_LADD(s2, s1, REG_ITMP1);
-                               M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                               M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
                        }
                        else {
                                M_LADD(s2, s1, REG_ITMP1);
-                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray, data[0]));
-                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
+                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
                                M_INSBL(REG_ZERO, REG_ITMP1, REG_ITMP3);
                                M_MSKBL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
                                M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
@@ -1721,13 +1721,13 @@ bool codegen_emit(jitdata *jd)
                        if (has_ext_instr_set) {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                        }
                        else {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray, data[0]));
-                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
+                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                                M_INSWL(REG_ZERO, REG_ITMP1, REG_ITMP3);
                                M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
                                M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
@@ -1744,13 +1744,13 @@ bool codegen_emit(jitdata *jd)
                        if (has_ext_instr_set) {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+                               M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
                        }
                        else {
                                M_LADD(s2, s1, REG_ITMP1);
                                M_LADD(s2, REG_ITMP1, REG_ITMP1);
-                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray, data[0]));
-                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+                               M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
+                               M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
                                M_INSWL(REG_ZERO, REG_ITMP1, REG_ITMP3);
                                M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
                                M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
@@ -1765,7 +1765,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_S4ADDQ(s2, s1, REG_ITMP1);
-                       M_IST(REG_ZERO, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       M_IST(REG_ZERO, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
                        break;
 
                case ICMD_LASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1775,7 +1775,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_S8ADDQ(s2, s1, REG_ITMP1);
-                       M_LST(REG_ZERO, REG_ITMP1, OFFSET(java_longarray, data[0]));
+                       M_LST(REG_ZERO, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
                        break;
 
                case ICMD_AASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1785,7 +1785,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SAADDQ(s2, s1, REG_ITMP1);
-                       M_AST(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       M_AST(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
                        break;
 
 
index 044a01bd14f3d619aaf266564d8b7025f19e7bd2..84c3bf3ea9cd981e9f760aed213589814054caa3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: emit.c 8260 2007-08-06 12:19:01Z michi $
+   $Id: emit.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -343,7 +343,7 @@ void emit_arithmetic_check(codegendata *cd, instruction *iptr, s4 reg)
 void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
 {
        if (INSTRUCTION_MUST_CHECK(iptr)) {
-               M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+               M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
                M_CMPULT(s2, REG_ITMP3, REG_ITMP3);
                M_BNEZ(REG_ITMP3, 1);
                M_ALD_INTERN(s2, REG_ZERO, EXCEPTION_HARDWARE_ARRAYINDEXOUTOFBOUNDS);
index 3c4130da18703dad7b4d8e9a5376b8bec76b7cb2..188165dd43ffed4c0885cb4e03decd43d9488a27 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: codegen.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -1145,7 +1145,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ITMP1);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        /* implicit null-pointer check */
-                       M_ILD_INTERN(d, s1, OFFSET(java_arrayheader, size));
+                       M_ILD_INTERN(d, s1, OFFSET(java_array_t, size));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1157,7 +1157,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ADD(REG_ITMP1, s1, s2); /* REG_ITMP1 = s1 + 1 * s2 */
-                       M_LDRSB(d, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                       M_LDRSB(d, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1169,7 +1169,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 1)); /* REG_ITMP1 = s1 + 2 * s2 */
-                       M_LDRH(d, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                       M_LDRH(d, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1181,7 +1181,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 1)); /* REG_ITMP1 = s1 + 2 * s2 */
-                       M_LDRSH(d, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+                       M_LDRSH(d, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1193,7 +1193,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
-                       M_ILD_INTERN(d, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       M_ILD_INTERN(d, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1205,7 +1205,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ADD(REG_ITMP3, s1, REG_LSL(s2, 3)); /* REG_ITMP3 = s1 + 8 * s2 */
-                       M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_longarray, data[0]));
+                       M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_longarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1218,10 +1218,10 @@ bool codegen_emit(jitdata *jd)
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
 #if !defined(ENABLE_SOFTFLOAT)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
-                       M_FLD_INTERN(d, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+                       M_FLD_INTERN(d, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
 #else
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
-                       M_ILD_INTERN(d, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+                       M_ILD_INTERN(d, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
 #endif
                        emit_store_dst(jd, iptr, d);
                        break;
@@ -1235,10 +1235,10 @@ bool codegen_emit(jitdata *jd)
                        M_ADD(REG_ITMP3, s1, REG_LSL(s2, 3)); /* REG_ITMP3 = s1 + 8 * s2 */
 #if !defined(ENABLE_SOFTFLOAT)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
-                       M_DLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray, data[0]));
+                       M_DLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray_t, data[0]));
 #else
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP12_PACKED);
-                       M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray, data[0]));
+                       M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray_t, data[0]));
 #endif
                        emit_store_dst(jd, iptr, d);
                        break;
@@ -1251,7 +1251,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
-                       M_LDR_INTERN(d, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       M_LDR_INTERN(d, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1263,7 +1263,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_ADD(REG_ITMP1, s1, s2); /* REG_ITMP1 = s1 + 1 * s2 */
-                       M_STRB(s3, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                       M_STRB(s3, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
                        break;
 
                case ICMD_CASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1274,7 +1274,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 1)); /* REG_ITMP1 = s1 + 2 * s2 */
-                       M_STRH(s3, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                       M_STRH(s3, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                        break;
 
                case ICMD_SASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1285,7 +1285,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 1)); /* REG_ITMP1 = s1 + 2 * s2 */
-                       M_STRH(s3, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+                       M_STRH(s3, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
                        break;
 
                case ICMD_IASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1296,7 +1296,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
-                       M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
                        break;
 
                case ICMD_LASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1307,7 +1307,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ADD(REG_ITMP3, s1, REG_LSL(s2, 3)); /* REG_ITMP3 = s1 + 8 * s2 */
                        s3 = emit_load_s3(jd, iptr, REG_ITMP12_PACKED);
-                       M_LST_INTERN(s3, REG_ITMP3, OFFSET(java_longarray, data[0]));
+                       M_LST_INTERN(s3, REG_ITMP3, OFFSET(java_longarray_t, data[0]));
                        break;
 
                case ICMD_FASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1319,10 +1319,10 @@ bool codegen_emit(jitdata *jd)
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
 #if !defined(ENABLE_SOFTFLOAT)
                        s3 = emit_load_s3(jd, iptr, REG_FTMP1);
-                       M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+                       M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
 #else
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+                       M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
 #endif
                        break;
 
@@ -1335,10 +1335,10 @@ bool codegen_emit(jitdata *jd)
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 3)); /* REG_ITMP1 = s1 + 8 * s2 */
 #if !defined(ENABLE_SOFTFLOAT)
                        s3 = emit_load_s3(jd, iptr, REG_FTMP1);
-                       M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+                       M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
 #else
                        s3 = emit_load_s3(jd, iptr, REG_ITMP23_PACKED);
-                       M_LST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+                       M_LST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
 #endif
                        break;
 
@@ -1371,7 +1371,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
-                       M_STR_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       M_STR_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
                        break;
 
                case ICMD_GETSTATIC:  /* ...  ==> ..., value                          */
index ccd5e740245ab0a965269a2793a04eb384121263..c238b99311ee6c233892e8d47d722e3f79dd82bb 100644 (file)
@@ -512,7 +512,7 @@ void emit_nullpointer_check_force(codegendata *cd, instruction *iptr, s4 reg)
 void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
 {
        if (INSTRUCTION_MUST_CHECK(iptr)) {
-               M_ILD_INTERN(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+               M_ILD_INTERN(REG_ITMP3, s1, OFFSET(java_array_t, size));
                M_CMP(s2, REG_ITMP3);
                M_TRAPHS(s2, EXCEPTION_HARDWARE_ARRAYINDEXOUTOFBOUNDS);
        }
index adc2d1c5ec5d329d23d6bedc654e04724b8c1c98..e03d57f4e21eecf2e76bf229d22458ef4f915cd0 100644 (file)
@@ -39,7 +39,7 @@
    memory. All functions writing values into the data area return the offset
    relative the begin of the code area (start of procedure).   
 
-   $Id: codegen-common.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: codegen-common.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -63,6 +63,7 @@
 #include "toolbox/logging.h"
 
 #include "native/jni.h"
+#include "native/localref.h"
 #include "native/native.h"
 
 #include "threads/threads-common.h"
index f8b72e3a0bcced1c217ef6105508b420c7bcea55..be5f8fa88517952aaa1b35cefb93533ee8813c7e 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: codegen.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -1908,7 +1908,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ITMP1);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
                        /* implicit null-pointer check */
-                       M_ILD(d, s1, OFFSET(java_arrayheader, size));
+                       M_ILD(d, s1, OFFSET(java_array_t, size));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1919,7 +1919,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movsbl_memindex_reg(cd, OFFSET(java_bytearray, data[0]), 
+                       emit_movsbl_memindex_reg(cd, OFFSET(java_bytearray_t, data[0]), 
                                                                         s1, s2, 0, d);
                        emit_store_dst(jd, iptr, d);
                        break;
@@ -1931,7 +1931,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movzwl_memindex_reg(cd, OFFSET(java_chararray, data[0]), 
+                       emit_movzwl_memindex_reg(cd, OFFSET(java_chararray_t, data[0]), 
                                                                         s1, s2, 1, d);
                        emit_store_dst(jd, iptr, d);
                        break;                  
@@ -1943,7 +1943,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movswl_memindex_reg(cd, OFFSET(java_shortarray, data[0]), 
+                       emit_movswl_memindex_reg(cd, OFFSET(java_shortarray_t, data[0]), 
                                                                         s1, s2, 1, d);
                        emit_store_dst(jd, iptr, d);
                        break;
@@ -1955,7 +1955,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_mov_memindex_reg(cd, OFFSET(java_intarray, data[0]), 
+                       emit_mov_memindex_reg(cd, OFFSET(java_intarray_t, data[0]), 
                                                                  s1, s2, 2, d);
                        emit_store_dst(jd, iptr, d);
                        break;
@@ -1971,10 +1971,10 @@ bool codegen_emit(jitdata *jd)
                        var = VAROP(iptr->dst);
 
                        assert(var->flags & INMEMORY);
-                       emit_mov_memindex_reg(cd, OFFSET(java_longarray, data[0]), 
+                       emit_mov_memindex_reg(cd, OFFSET(java_longarray_t, data[0]), 
                                                                  s1, s2, 3, REG_ITMP3);
                        emit_mov_reg_membase(cd, REG_ITMP3, REG_SP, var->vv.regoff);
-                       emit_mov_memindex_reg(cd, OFFSET(java_longarray, data[0]) + 4, 
+                       emit_mov_memindex_reg(cd, OFFSET(java_longarray_t, data[0]) + 4, 
                                                                  s1, s2, 3, REG_ITMP3);
                        emit_mov_reg_membase(cd, REG_ITMP3, REG_SP, var->vv.regoff + 4);
                        break;
@@ -1986,7 +1986,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_flds_memindex(cd, OFFSET(java_floatarray, data[0]), s1, s2, 2);
+                       emit_flds_memindex(cd, OFFSET(java_floatarray_t, data[0]), s1, s2, 2);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1997,7 +1997,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP3);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_fldl_memindex(cd, OFFSET(java_doublearray, data[0]), s1, s2,3);
+                       emit_fldl_memindex(cd, OFFSET(java_doublearray_t, data[0]), s1, s2,3);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -2008,7 +2008,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_mov_memindex_reg(cd, OFFSET(java_objectarray, data[0]),
+                       emit_mov_memindex_reg(cd, OFFSET(java_objectarray_t, data[0]),
                                                                  s1, s2, 2, d);
                        emit_store_dst(jd, iptr, d);
                        break;
@@ -2026,7 +2026,7 @@ bool codegen_emit(jitdata *jd)
                                M_INTMOVE(s3, REG_ITMP3);
                                s3 = REG_ITMP3;
                        }
-                       emit_movb_reg_memindex(cd, s3, OFFSET(java_bytearray, data[0]),
+                       emit_movb_reg_memindex(cd, s3, OFFSET(java_bytearray_t, data[0]),
                                                                   s1, s2, 0);
                        break;
 
@@ -2037,7 +2037,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       emit_movw_reg_memindex(cd, s3, OFFSET(java_chararray, data[0]),
+                       emit_movw_reg_memindex(cd, s3, OFFSET(java_chararray_t, data[0]),
                                                                   s1, s2, 1);
                        break;
 
@@ -2048,7 +2048,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       emit_movw_reg_memindex(cd, s3, OFFSET(java_shortarray, data[0]),
+                       emit_movw_reg_memindex(cd, s3, OFFSET(java_shortarray_t, data[0]),
                                                                   s1, s2, 1);
                        break;
 
@@ -2059,7 +2059,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       emit_mov_reg_memindex(cd, s3, OFFSET(java_intarray, data[0]),
+                       emit_mov_reg_memindex(cd, s3, OFFSET(java_intarray_t, data[0]),
                                                                  s1, s2, 2);
                        break;
 
@@ -2074,11 +2074,11 @@ bool codegen_emit(jitdata *jd)
 
                        assert(var->flags & INMEMORY);
                        emit_mov_membase_reg(cd, REG_SP, var->vv.regoff, REG_ITMP3);
-                       emit_mov_reg_memindex(cd, REG_ITMP3, OFFSET(java_longarray, data[0])
+                       emit_mov_reg_memindex(cd, REG_ITMP3, OFFSET(java_longarray_t, data[0])
                                                                  , s1, s2, 3);
                        emit_mov_membase_reg(cd, REG_SP, var->vv.regoff + 4, REG_ITMP3);
                        emit_mov_reg_memindex(cd, REG_ITMP3,
-                                                           OFFSET(java_longarray, data[0]) + 4, s1, s2, 3);
+                                                           OFFSET(java_longarray_t, data[0]) + 4, s1, s2, 3);
                        break;
 
                case ICMD_FASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -2088,7 +2088,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP1);
-                       emit_fstps_memindex(cd, OFFSET(java_floatarray, data[0]), s1, s2,2);
+                       emit_fstps_memindex(cd, OFFSET(java_floatarray_t, data[0]), s1, s2,2);
                        break;
 
                case ICMD_DASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -2098,7 +2098,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP1);
-                       emit_fstpl_memindex(cd, OFFSET(java_doublearray, data[0]),
+                       emit_fstpl_memindex(cd, OFFSET(java_doublearray_t, data[0]),
                                                                s1, s2, 3);
                        break;
 
@@ -2119,7 +2119,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ITMP1);
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       emit_mov_reg_memindex(cd, s3, OFFSET(java_objectarray, data[0]),
+                       emit_mov_reg_memindex(cd, s3, OFFSET(java_objectarray_t, data[0]),
                                                                  s1, s2, 2);
                        break;
 
@@ -2130,7 +2130,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        emit_movb_imm_memindex(cd, iptr->sx.s23.s3.constval,
-                                                                  OFFSET(java_bytearray, data[0]), s1, s2, 0);
+                                                                  OFFSET(java_bytearray_t, data[0]), s1, s2, 0);
                        break;
 
                case ICMD_CASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -2140,7 +2140,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval,
-                                                                  OFFSET(java_chararray, data[0]), s1, s2, 1);
+                                                                  OFFSET(java_chararray_t, data[0]), s1, s2, 1);
                        break;
 
                case ICMD_SASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -2150,7 +2150,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval,
-                                                                  OFFSET(java_shortarray, data[0]), s1, s2, 1);
+                                                                  OFFSET(java_shortarray_t, data[0]), s1, s2, 1);
                        break;
 
                case ICMD_IASTORECONST: /* ..., arrayref, index  ==> ...              */
@@ -2160,7 +2160,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        emit_mov_imm_memindex(cd, iptr->sx.s23.s3.constval,
-                                                                 OFFSET(java_intarray, data[0]), s1, s2, 2);
+                                                                 OFFSET(java_intarray_t, data[0]), s1, s2, 2);
                        break;
 
                case ICMD_LASTORECONST: /* ..., arrayref, index  ==> ...              */
@@ -2171,10 +2171,10 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        emit_mov_imm_memindex(cd, 
                                                   (u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff),
-                                                  OFFSET(java_longarray, data[0]), s1, s2, 3);
+                                                  OFFSET(java_longarray_t, data[0]), s1, s2, 3);
                        emit_mov_imm_memindex(cd, 
                                                        ((s4)iptr->sx.s23.s3.constval) >> 31, 
-                                                       OFFSET(java_longarray, data[0]) + 4, s1, s2, 3);
+                                                       OFFSET(java_longarray_t, data[0]) + 4, s1, s2, 3);
                        break;
 
                case ICMD_AASTORECONST: /* ..., arrayref, index  ==> ...              */
@@ -2184,7 +2184,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        emit_mov_imm_memindex(cd, 0, 
-                                                                 OFFSET(java_objectarray, data[0]), s1, s2, 2);
+                                                                 OFFSET(java_objectarray_t, data[0]), s1, s2, 2);
                        break;
 
 
index 9460875e44a051617d3129dfc383b8d865b41dd2..b74a2959e0f4a98aa4552975a3623d9a42a552dc 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: emit.c 8267 2007-08-07 11:07:48Z twisti $
+   $Id: emit.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -425,7 +425,7 @@ void emit_arithmetic_check(codegendata *cd, instruction *iptr, s4 reg)
 void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
 {
        if (INSTRUCTION_MUST_CHECK(iptr)) {
-        M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+        M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
         M_CMP(REG_ITMP3, s2);
         M_BB(6);
                M_ALD_MEM(s2, EXCEPTION_HARDWARE_ARRAYINDEXOUTOFBOUNDS);
index d97fde5c8fa955bf2439e4623ead00a6882fa7ad..1c18cf124664bf1a2773f189147fa74784e053e0 100644 (file)
@@ -1339,7 +1339,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ATMP1);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        /* implicit null-pointer check */
-                       M_ILD(d, s1, OFFSET(java_arrayheader, size));
+                       M_ILD(d, s1, OFFSET(java_array_t, size));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1350,7 +1350,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_INTMOVE(s2, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_bytearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1367,7 +1367,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(1, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_chararray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_chararray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1384,7 +1384,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(1, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_shortarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                
@@ -1402,7 +1402,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(2, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_intarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_intarray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1418,7 +1418,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_INTMOVE(s2, REG_ITMP1);
                        M_ISSL_IMM(3, REG_ITMP1);
-                       M_IADD_IMM(OFFSET(java_longarray, data[0]), REG_ITMP1);
+                       M_IADD_IMM(OFFSET(java_longarray_t, data[0]), REG_ITMP1);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP1, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1432,7 +1432,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(2, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_floatarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1452,7 +1452,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(3, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_doublearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1473,7 +1473,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(2, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_objectarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_objectarray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
        
@@ -1489,7 +1489,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_INTMOVE(s2, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_bytearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1503,7 +1503,7 @@ bool codegen_emit(jitdata *jd)
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(1, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_chararray, data[0]), REG_ITMP2); 
+                       M_IADD_IMM(OFFSET(java_chararray_t, data[0]), REG_ITMP2); 
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1517,7 +1517,7 @@ bool codegen_emit(jitdata *jd)
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(1, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_shortarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1531,7 +1531,7 @@ bool codegen_emit(jitdata *jd)
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(2, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_intarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_intarray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1545,7 +1545,7 @@ bool codegen_emit(jitdata *jd)
 
                        M_INTMOVE(s2, REG_ITMP1);
                        M_ISSL_IMM(3, REG_ITMP1);
-                       M_IADD_IMM(OFFSET(java_longarray, data[0]), REG_ITMP1);
+                       M_IADD_IMM(OFFSET(java_longarray_t, data[0]), REG_ITMP1);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP1, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1559,7 +1559,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(2, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_floatarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1578,7 +1578,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_INTMOVE(s2, REG_ITMP2);
                        M_ISSL_IMM(3, REG_ITMP2);
-                       M_IADD_IMM(OFFSET(java_doublearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP2, REG_ATMP1);
                        /* implicit null-pointer check */
@@ -1612,7 +1612,7 @@ bool codegen_emit(jitdata *jd)
                        s3 = emit_load_s3(jd, iptr, REG_ATMP2);
                        M_INTMOVE(s2, REG_ITMP1);
                        M_ISSL_IMM(2, REG_ITMP1);
-                       M_IADD_IMM(OFFSET(java_objectarray, data[0]), REG_ITMP1);
+                       M_IADD_IMM(OFFSET(java_objectarray_t, data[0]), REG_ITMP1);
                        M_ADRMOVE(s1, REG_ATMP1);
                        M_AADDINT(REG_ITMP1, REG_ATMP1);
                        /* implicit null-pointer check */
index dff441f7f67b06197d95447163667ae8463b1725..a35551be4acbb1524c8f38052bd9e77dc2a71d65 100644 (file)
@@ -737,7 +737,7 @@ void emit_classcast_check(codegendata *cd, instruction *iptr, s4 condition, s4 r
 void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
 {
        if (INSTRUCTION_MUST_CHECK(iptr)) {
-               M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+               M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
                M_ICMP(s2, REG_ITMP3);
                M_BHI(4);
                M_TRAP_SETREGISTER(s2);
index c2e25312258f9d202a121333623f6a9bb62936e3..d58e6b0483b6ab8ef5a3a53b078c65c7d178c70a 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+   $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -1708,7 +1708,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ITMP1);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        /* implicit null-pointer check */
-                       M_ILD(d, s1, OFFSET(java_arrayheader, size));
+                       M_ILD(d, s1, OFFSET(java_array_t, size));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1720,7 +1720,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_AADD(s2, s1, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_BLDS(d, REG_ITMP3, OFFSET(java_bytearray, data[0]));
+                       M_BLDS(d, REG_ITMP3, OFFSET(java_bytearray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1733,7 +1733,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(s2, s1, REG_ITMP3);
                        M_AADD(s2, REG_ITMP3, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_SLDU(d, REG_ITMP3, OFFSET(java_chararray, data[0]));
+                       M_SLDU(d, REG_ITMP3, OFFSET(java_chararray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;                  
 
@@ -1746,7 +1746,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(s2, s1, REG_ITMP3);
                        M_AADD(s2, REG_ITMP3, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_SLDS(d, REG_ITMP3, OFFSET(java_shortarray, data[0]));
+                       M_SLDS(d, REG_ITMP3, OFFSET(java_shortarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1759,7 +1759,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, 2, REG_ITMP3);
                        M_AADD(REG_ITMP3, s1, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_ILD_INTERN(d, REG_ITMP3, OFFSET(java_intarray, data[0]));
+                       M_ILD_INTERN(d, REG_ITMP3, OFFSET(java_intarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1776,7 +1776,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, 3, REG_ITMP3);
                        M_AADD(REG_ITMP3, s1, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_longarray, data[0]));
+                       M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_longarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1789,7 +1789,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, 2, REG_ITMP3);
                        M_AADD(REG_ITMP3, s1, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_FLD_INTERN(d, REG_ITMP3, OFFSET(java_floatarray, data[0]));
+                       M_FLD_INTERN(d, REG_ITMP3, OFFSET(java_floatarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1802,7 +1802,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, 3, REG_ITMP3);
                        M_AADD(REG_ITMP3, s1, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_DLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray, data[0]));
+                       M_DLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1815,7 +1815,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, POINTERSHIFT, REG_ITMP3);
                        M_AADD(REG_ITMP3, s1, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_ALD_INTERN(d, REG_ITMP3, OFFSET(java_objectarray, data[0]));
+                       M_ALD_INTERN(d, REG_ITMP3, OFFSET(java_objectarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1828,7 +1828,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(s2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_BST(s3, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                       M_BST(s3, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
                        break;
 
                case ICMD_CASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1841,7 +1841,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(s2, REG_ITMP1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_SST(s3, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                       M_SST(s3, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                        break;
 
                case ICMD_IASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1853,7 +1853,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
                        break;
 
                case ICMD_LASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1869,7 +1869,7 @@ bool codegen_emit(jitdata *jd)
                        s3 = emit_load_s3(jd, iptr, REG_ITMP23_PACKED);
 #endif
                        /* implicit null-pointer check */
-                       M_LST_INTERN(s3, REG_ITMP1, OFFSET(java_longarray, data[0]));
+                       M_LST_INTERN(s3, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
                        break;
 
                case ICMD_FASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1881,7 +1881,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP1);
                        /* implicit null-pointer check */
-                       M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+                       M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
                        break;
 
                case ICMD_DASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1893,7 +1893,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP1);
                        /* implicit null-pointer check */
-                       M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+                       M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
                        break;
 
 
@@ -1918,7 +1918,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_AST_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       M_AST_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
                        break;
 
 
@@ -1929,7 +1929,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_AADD(s2, s1, REG_ITMP1);
                        /* implicit null-pointer check */
-                       M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                       M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
                        break;
 
                case ICMD_CASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1941,7 +1941,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(s2, s1, REG_ITMP1);
                        M_AADD(s2, REG_ITMP1, REG_ITMP1);
                        /* implicit null-pointer check */
-                       M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                       M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                        break;
 
                case ICMD_IASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1952,7 +1952,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, 2, REG_ITMP2);
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        /* implicit null-pointer check */
-                       M_IST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       M_IST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
                        break;
 
                case ICMD_LASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1964,9 +1964,9 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        /* implicit null-pointer check */
 #if SIZEOF_VOID_P == 8
-                       M_LST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_longarray, data[0]));
+                       M_LST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
 #else
-                       M_LST_INTERN(PACK_REGS(REG_ZERO, REG_ZERO), REG_ITMP1, OFFSET(java_longarray, data[0]));
+                       M_LST_INTERN(PACK_REGS(REG_ZERO, REG_ZERO), REG_ITMP1, OFFSET(java_longarray_t, data[0]));
 #endif
                        break;
 
@@ -1978,7 +1978,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, POINTERSHIFT, REG_ITMP2);
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        /* implicit null-pointer check */
-                       M_AST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       M_AST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
                        break;
 
 
index e1c3b3d8030cdb45be255e1e23640cd524848a77..b418863715f9990a633bfdf9ed9a27ca5b51ce9a 100644 (file)
@@ -512,7 +512,7 @@ void emit_arithmetic_check(codegendata *cd, instruction *iptr, s4 reg)
 void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
 {
        if (INSTRUCTION_MUST_CHECK(iptr)) {
-               M_ILD_INTERN(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+               M_ILD_INTERN(REG_ITMP3, s1, OFFSET(java_array_t, size));
                M_CMPULT(s2, REG_ITMP3, REG_ITMP3);
                M_BNEZ(REG_ITMP3, 2);
                M_NOP;
index fda9c1bd3f1422633b30c7eb2d5303fe294392d8..1efb03229a519ff63989f5d6db511776e4e4ae82 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: codegen.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -1386,7 +1386,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ITMP1);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        /* implicit null-pointer check */
-                       M_ILD(d, s1, OFFSET(java_arrayheader, size));
+                       M_ILD(d, s1, OFFSET(java_array_t, size));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1396,7 +1396,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       M_IADD_IMM(s2, OFFSET(java_bytearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(s2, OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LBZX(d, s1, REG_ITMP2);
                        M_BSEXT(d, d);
@@ -1410,7 +1410,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 1, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LHZX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1423,7 +1423,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 1, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LHAX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1436,7 +1436,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 2, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LWZX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1451,7 +1451,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 3, REG_ITMP2);
                        M_IADD(s1, REG_ITMP2, REG_ITMP2);
-                       M_LLD_INTERN(d, REG_ITMP2, OFFSET(java_longarray, data[0]));
+                       M_LLD_INTERN(d, REG_ITMP2, OFFSET(java_longarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1462,7 +1462,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 2, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LFSX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1475,7 +1475,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 3, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LFDX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1488,7 +1488,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 2, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LWZX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1501,7 +1501,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       M_IADD_IMM(s2, OFFSET(java_bytearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(s2, OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STBX(s3, s1, REG_ITMP2);
                        break;
@@ -1513,7 +1513,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_SLL_IMM(s2, 1, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STHX(s3, s1, REG_ITMP2);
                        break;
@@ -1525,7 +1525,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_SLL_IMM(s2, 1, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STHX(s3, s1, REG_ITMP2);
                        break;
@@ -1537,7 +1537,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_SLL_IMM(s2, 2, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STWX(s3, s1, REG_ITMP2);
                        break;
@@ -1549,7 +1549,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3_high(jd, iptr, REG_ITMP3);
                        M_SLL_IMM(s2, 3, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_longarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_longarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STWX(s3, s1, REG_ITMP2);
                        M_IADD_IMM(REG_ITMP2, 4, REG_ITMP2);
@@ -1564,7 +1564,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP3);
                        M_SLL_IMM(s2, 2, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STFSX(s3, s1, REG_ITMP2);
                        break;
@@ -1576,7 +1576,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP3);
                        M_SLL_IMM(s2, 3, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STFDX(s3, s1, REG_ITMP2);
                        break;
@@ -1603,7 +1603,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_SLL_IMM(s2, 2, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STWX(s3, s1, REG_ITMP2);
                        break;
index d74b1dc99d90d69af131d243f6c195a41ab1be40..85973a2f6e9f4568f9f879ac7ccd4658180a908a 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: emit.c 8270 2007-08-08 13:57:12Z twisti $
+   $Id: emit.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -437,7 +437,7 @@ void emit_arithmetic_check(codegendata *cd, instruction *iptr, s4 reg)
 void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
 {
        if (INSTRUCTION_MUST_CHECK(iptr)) {
-               M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+               M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
                M_TRAPGEU(s2, REG_ITMP3);
        }
 }
index a723753fb85b0a9d5ed1bd2cd4e460b9dd253184..96cebb8d0c37c91882cb956a77dfac1a670b8c97 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+   $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -1343,7 +1343,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ITMP1);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_nullpointer_check(cd, iptr, s1);
-                       M_ILD(d, s1, OFFSET(java_arrayheader, size));
+                       M_ILD(d, s1, OFFSET(java_array_t, size));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1353,7 +1353,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       M_IADD_IMM(s2, OFFSET(java_bytearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(s2, OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LBZX(d, s1, REG_ITMP2);
                        M_BSEXT(d, d);
@@ -1367,7 +1367,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 1, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LHZX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1380,7 +1380,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 1, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LHAX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1393,7 +1393,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 2, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LWAX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1408,7 +1408,7 @@ bool codegen_emit(jitdata *jd)
                        M_SLL_IMM(s2, 3, REG_ITMP2);
                        M_IADD(s1, REG_ITMP2, REG_ITMP2);
                        /* implicit null-pointer check */
-                       M_LLD_INTERN(d, REG_ITMP2, OFFSET(java_longarray, data[0]));
+                       M_LLD_INTERN(d, REG_ITMP2, OFFSET(java_longarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1419,7 +1419,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 2, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LFSX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1432,7 +1432,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 3, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LFDX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1445,7 +1445,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_SLL_IMM(s2, 3, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_ALDX(d, s1, REG_ITMP2);
                        emit_store_dst(jd, iptr, d);
@@ -1458,7 +1458,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       M_IADD_IMM(s2, OFFSET(java_bytearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(s2, OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STBX(s3, s1, REG_ITMP2);
                        break;
@@ -1470,7 +1470,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_SLL_IMM(s2, 1, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STHX(s3, s1, REG_ITMP2);
                        break;
@@ -1482,7 +1482,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_SLL_IMM(s2, 1, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
                        M_STHX(s3, s1, REG_ITMP2);
                        break;
 
@@ -1493,7 +1493,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_SLL_IMM(s2, 2, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STWX(s3, s1, REG_ITMP2);
                        break;
@@ -1505,7 +1505,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_SLL_IMM(s2, 3, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_longarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_longarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_LSTX(s3, s1, REG_ITMP2);
                        break;
@@ -1517,7 +1517,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP3);
                        M_SLL_IMM(s2, 2, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STFSX(s3, s1, REG_ITMP2);
                        break;
@@ -1529,7 +1529,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP3);
                        M_SLL_IMM(s2, 3, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_STFDX(s3, s1, REG_ITMP2);
                        break;
@@ -1556,7 +1556,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        M_SLL_IMM(s2, 3, REG_ITMP2);
-                       M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray, data[0]), REG_ITMP2);
+                       M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray_t, data[0]), REG_ITMP2);
                        /* implicit null-pointer check */
                        M_ASTX(s3, s1, REG_ITMP2);
                        break;
index b18d5c521a8acd324b035d7963f10cd5f39d083f..6c0bee647298089781b74fecd0a64ec32e13e8f7 100644 (file)
@@ -527,12 +527,12 @@ void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1,
        if (checkbounds) {
 #define SOFTEX 0
 #if SOFTEX
-               M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+               M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
                M_CMPU(s2, REG_ITMP3);
                codegen_add_arrayindexoutofboundsexception_ref(cd, s2);
                BRANCH_NOPS;
 #else
-               M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+               M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
                M_CMPU(s2, REG_ITMP3);
                M_BLT(1);
                /* ALD is 4 byte aligned, ILD 2, onyl LWZ is byte aligned */
index c2beb38af04abeeaf69626004d52461af9af049b..943d374abfb99d27d0ba870b972273db3f583ec4 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+   $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -1713,7 +1713,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
                        /* TODO softnull */
                        /* implicit null-pointer check */
-                       M_ILD(d, s1, OFFSET(java_arrayheader, size));
+                       M_ILD(d, s1, OFFSET(java_array_t, size));
                        emit_store_dst(jd, iptr, d);
 
                        break;
@@ -1726,7 +1726,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
 
-                       N_IC(d, OFFSET(java_bytearray, data[0]), s2, s1);
+                       N_IC(d, OFFSET(java_bytearray_t, data[0]), s2, s1);
 
                        M_SLL_IMM(24, d);
                        M_SRA_IMM(24, d);
@@ -1746,7 +1746,7 @@ bool codegen_emit(jitdata *jd)
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(1, REG_ITMP2);
 
-                       N_LH(d, OFFSET(java_chararray, data[0]), REG_ITMP2, s1);
+                       N_LH(d, OFFSET(java_chararray_t, data[0]), REG_ITMP2, s1);
 
                        /* N_LH does sign extends, undo ! */
 
@@ -1767,7 +1767,7 @@ bool codegen_emit(jitdata *jd)
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(1, REG_ITMP2);
 
-                       N_LH(d, OFFSET(java_shortarray, data[0]), REG_ITMP2, s1);
+                       N_LH(d, OFFSET(java_shortarray_t, data[0]), REG_ITMP2, s1);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1781,7 +1781,7 @@ bool codegen_emit(jitdata *jd)
                        
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(2, REG_ITMP2); /* scale index by 4 */
-                       N_L(d, OFFSET(java_intarray, data[0]), REG_ITMP2, s1);
+                       N_L(d, OFFSET(java_intarray_t, data[0]), REG_ITMP2, s1);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1805,8 +1805,8 @@ bool codegen_emit(jitdata *jd)
                                s1 = REG_ITMP3;
                        }
 
-                       N_L(GET_HIGH_REG(d) /* evntl. itmp1 */, OFFSET(java_intarray, data[0]), REG_ITMP2, s1);
-                       N_L(GET_LOW_REG(d) /* evntl. itmp2 */, OFFSET(java_intarray, data[0]) + 4, REG_ITMP2, s1);
+                       N_L(GET_HIGH_REG(d) /* evntl. itmp1 */, OFFSET(java_intarray_t, data[0]), REG_ITMP2, s1);
+                       N_L(GET_LOW_REG(d) /* evntl. itmp2 */, OFFSET(java_intarray_t, data[0]) + 4, REG_ITMP2, s1);
                        emit_store_dst(jd, iptr, d);
 
                        break;
@@ -1823,7 +1823,7 @@ bool codegen_emit(jitdata *jd)
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(2, REG_ITMP2); /* scale index by 4 */
        
-                       N_LE(d, OFFSET(java_floatarray, data[0]), REG_ITMP2, s1);
+                       N_LE(d, OFFSET(java_floatarray_t, data[0]), REG_ITMP2, s1);
 
                        emit_store_dst(jd, iptr, d);
                        break;
@@ -1839,7 +1839,7 @@ bool codegen_emit(jitdata *jd)
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(3, REG_ITMP2); /* scale index by 8 */
        
-                       N_LD(d, OFFSET(java_floatarray, data[0]), REG_ITMP2, s1);
+                       N_LD(d, OFFSET(java_floatarray_t, data[0]), REG_ITMP2, s1);
 
                        emit_store_dst(jd, iptr, d);
                        break;
@@ -1854,7 +1854,7 @@ bool codegen_emit(jitdata *jd)
                        
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(2, REG_ITMP2); /* scale index by 4 */
-                       N_L(d, OFFSET(java_objectarray, data[0]), REG_ITMP2, s1);
+                       N_L(d, OFFSET(java_objectarray_t, data[0]), REG_ITMP2, s1);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1865,7 +1865,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
 
-                       N_STC(s3, OFFSET(java_bytearray, data[0]), s2, s1);
+                       N_STC(s3, OFFSET(java_bytearray_t, data[0]), s2, s1);
                        break;
 
                case ICMD_CASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1879,7 +1879,7 @@ bool codegen_emit(jitdata *jd)
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(1, REG_ITMP2);
 
-                       N_STH(s3, OFFSET(java_chararray, data[0]), REG_ITMP2, s1);
+                       N_STH(s3, OFFSET(java_chararray_t, data[0]), REG_ITMP2, s1);
 
                        break;
 
@@ -1893,7 +1893,7 @@ bool codegen_emit(jitdata *jd)
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(1, REG_ITMP2);
 
-                       N_STH(s3, OFFSET(java_shortarray, data[0]), REG_ITMP2, s1);
+                       N_STH(s3, OFFSET(java_shortarray_t, data[0]), REG_ITMP2, s1);
                        break;
 
                case ICMD_IASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1908,7 +1908,7 @@ bool codegen_emit(jitdata *jd)
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(2, REG_ITMP2);
 
-                       N_ST(s3, OFFSET(java_intarray, data[0]), REG_ITMP2, s1);
+                       N_ST(s3, OFFSET(java_intarray_t, data[0]), REG_ITMP2, s1);
                        break;
 
                case ICMD_LASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1922,9 +1922,9 @@ bool codegen_emit(jitdata *jd)
                        M_SLL_IMM(3, REG_ITMP2);
 
                        s3 = emit_load_s3_high(jd, iptr, REG_ITMP3);
-                       N_ST(s3, OFFSET(java_intarray, data[0]), REG_ITMP2, s1);
+                       N_ST(s3, OFFSET(java_intarray_t, data[0]), REG_ITMP2, s1);
                        s3 = emit_load_s3_low(jd, iptr, REG_ITMP3);
-                       N_ST(s3, OFFSET(java_intarray, data[0]) + 4, REG_ITMP2, s1);
+                       N_ST(s3, OFFSET(java_intarray_t, data[0]) + 4, REG_ITMP2, s1);
                        break;
 
                case ICMD_FASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1937,7 +1937,7 @@ bool codegen_emit(jitdata *jd)
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(2, REG_ITMP2);
 
-                       N_STE(s3, OFFSET(java_floatarray, data[0]), REG_ITMP2, s1);
+                       N_STE(s3, OFFSET(java_floatarray_t, data[0]), REG_ITMP2, s1);
                        break;
 
                case ICMD_DASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1950,7 +1950,7 @@ bool codegen_emit(jitdata *jd)
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(3, REG_ITMP2);
 
-                       N_STD(s3, OFFSET(java_doublearray, data[0]), REG_ITMP2, s1);
+                       N_STD(s3, OFFSET(java_doublearray_t, data[0]), REG_ITMP2, s1);
                        break;
 
                case ICMD_AASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1978,7 +1978,7 @@ bool codegen_emit(jitdata *jd)
 
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(2, REG_ITMP2);
-                       N_ST(s3, OFFSET(java_objectarray, data[0]), REG_ITMP2, s1);
+                       N_ST(s3, OFFSET(java_objectarray_t, data[0]), REG_ITMP2, s1);
 
                        /*
                        M_SAADDQ(s2, s1, REG_ITMP1); itmp1 := 4 * s2 + s1
index 8fa71c0d58eb0f28469fcd34afc1113920271a38..d1a70b9a8671e68bf055b9824cd9760f673d94f8 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: emit.c 8296 2007-08-11 22:38:38Z pm $
+   $Id: emit.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -234,9 +234,79 @@ uint32_t emit_trap(codegendata *cd)
 *******************************************************************************/
 
 #if !defined(NDEBUG)
+#include "vm/jit/trace.h"
 void emit_verbosecall_enter(jitdata *jd)
 {
+#if 1
+       methodinfo   *m;
+       codegendata  *cd;
+       s4            stackframesize;
+       s4            i, off, disp;
+
+       m  = jd->m;
+       cd = jd->cd;
+
+       /* mark trace code */
+
+       M_NOP;
+
+       /* allocate stack frame */
+
+       stackframesize = 96 + (ARG_CNT * 8);
+       M_ASUB_IMM(stackframesize, REG_SP);
+
+       /* store argument registers in array */
+
+       off = 96;
+
+       for (i = 0; i < INT_ARG_CNT; ++i, off += 8) {
+               M_IST(abi_registers_integer_argument[i], REG_SP, off + 4);
+               /* high bytes are sign extension */
+               M_SRA_IMM(31, abi_registers_integer_argument[i]);
+               M_IST(abi_registers_integer_argument[i], REG_SP, off);
+       }
+
+       for (i = 0; i < FLT_ARG_CNT; ++i, off += 8) {
+               M_DST(abi_registers_float_argument[i], REG_SP, off);
+       }
        
+       /* load arguments for trace_java_call_enter */
+
+       /* methodinfo */
+       disp = dseg_add_address(cd, m);
+       M_ALD_DSEG(REG_A0, disp);       
+       /* pointer to argument registers array */
+       M_LDA(REG_A1, REG_SP, 96);
+       /* pointer to on stack arguments */
+       M_LDA(REG_A2, REG_SP, stackframesize + (cd->stackframesize * 8));
+
+       /* call trace_java_call_enter */
+
+       disp = dseg_add_functionptr(cd, trace_java_call_enter);
+       M_ALD_DSEG(REG_ITMP3, disp);
+       M_CALL(REG_ITMP3);
+
+       /* restore argument registers */
+
+       off = 96;
+
+       for (i = 0; i < INT_ARG_CNT; ++i, off += 8) {
+               M_ILD(abi_registers_integer_argument[i], REG_SP, off + 4);
+       }
+
+       for (i = 0; i < FLT_ARG_CNT; ++i, off += 8) {
+               M_DLD(abi_registers_float_argument[i], REG_SP, off);
+       }
+
+       /* remove stack frame */
+
+       M_AADD_IMM(stackframesize, REG_SP);
+
+       /* mark trace code */
+
+       M_NOP;
+
+#else
        methodinfo   *m;
        codegendata  *cd;
        methoddesc   *md;
@@ -410,6 +480,7 @@ void emit_verbosecall_enter(jitdata *jd)
        /* mark trace code */
 
        M_NOP;
+#endif
 }
 #endif /* !defined(NDEBUG) */
 
@@ -423,6 +494,61 @@ void emit_verbosecall_enter(jitdata *jd)
 #if !defined(NDEBUG)
 void emit_verbosecall_exit(jitdata *jd)
 {
+#if 1
+       methodinfo   *m;
+       codegendata  *cd;
+       s4            disp;
+       s4            stackframesize;
+
+       m  = jd->m;
+       cd = jd->cd;
+
+       /* mark trace code */
+
+       M_NOP;
+
+       /* allocate stackframe */
+
+       stackframesize = 96 + (3 * 8);
+       M_ASUB_IMM(stackframesize, REG_SP);
+
+       /* store return values in array and sign extend them */
+
+       M_IST(REG_RESULT, REG_SP, 96 + (0 * 8) + 4);
+       M_SRA_IMM(31, REG_RESULT);
+       M_IST(REG_RESULT, REG_SP, 96 + (0 * 8));
+
+       M_IST(REG_RESULT2, REG_SP, 96 + (1 * 8) + 4);
+       M_SRA_IMM(31, REG_RESULT2);
+       M_IST(REG_RESULT2, REG_SP, 96 + (1 * 8));
+
+       M_DST(REG_FRESULT, REG_SP, 96 + (2 * 8));
+
+       /* call trace_java_call_exit */
+
+       disp = dseg_add_address(cd, m);
+       M_ALD_DSEG(REG_A0, disp);
+       M_LDA(REG_A1, REG_SP, 96);
+       disp = dseg_add_functionptr(cd, trace_java_call_exit);
+       M_ALD_DSEG(REG_ITMP3, disp);
+       M_CALL(REG_ITMP3);
+
+       /* restore return values */
+
+       M_ILD(REG_RESULT, REG_SP, 96 + (0 * 8) + 4);
+       M_ILD(REG_RESULT2, REG_SP, 96 + (1 * 8) + 4);
+       M_DLD(REG_FRESULT, REG_SP, 96 + (2 * 8));
+
+       /* remove stackframe */
+
+       M_AADD_IMM(stackframesize, REG_SP);
+
+       /* mark trace code */
+
+       M_NOP;
+
+#else
+
        methodinfo   *m;
        codegendata  *cd;
        registerdata *rd;
@@ -470,6 +596,7 @@ void emit_verbosecall_exit(jitdata *jd)
        /* mark trace code */
 
        M_NOP;
+#endif
 }
 #endif /* !defined(NDEBUG) */
 
@@ -823,7 +950,7 @@ void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1,
                /* Size is s4, >= 0
                 * Do unsigned comparison to catch negative indexes.
                 */
-               N_CL(s2, OFFSET(java_arrayheader, size), RN, s1);
+               N_CL(s2, OFFSET(java_array_t, size), RN, s1);
         M_BLT(SZ_BRC + SZ_ILL);
                M_ILL2(s2, EXCEPTION_HARDWARE_ARRAYINDEXOUTOFBOUNDS);
        }
index c56421a99b1f7504edededfc41d35383043aa25c..3b6fc16e094bffad188d697562767067ad6e0202 100644 (file)
@@ -98,6 +98,18 @@ s4 get_lopart_disp(disp)
                
        return lodisp;
 }
+
+#ifndef NDEBUG
+bool check_13bit_imm(s8 imm)
+{
+       s4 check = imm & ~0x1fff;
+       if (check == 0) return true; /* pos imm. */
+       if (check + 0x1fff == -1) return true; /* neg imm. */
+       
+       printf("immediate out-of-bounds: %d\n", imm);
+       return false;
+}
+#endif
        
 
 /* codegen_emit ****************************************************************
@@ -145,6 +157,7 @@ bool codegen_emit(jitdata *jd)
        {
        s4 i, p, t, l;
        s4 savedregs_num;
+       s4 framesize_disp;
 
 #if 0 /* no leaf optimization yet */
        savedregs_num = (jd->isleafmethod) ? 0 : 1;       /* space to save the RA */
@@ -172,7 +185,7 @@ bool codegen_emit(jitdata *jd)
        /* create method header */
 
        (void) dseg_add_unique_address(cd, code);              /* CodeinfoPointer */
-       (void) dseg_add_unique_s4(cd, cd->stackframesize * 8); /* FrameSize       */
+       framesize_disp = dseg_add_unique_s4(cd, cd->stackframesize * 8); /* FrameSize       */
 
 #if defined(ENABLE_THREADS)
        /* IsSync contains the offset relative to the stack pointer for the
@@ -204,9 +217,15 @@ bool codegen_emit(jitdata *jd)
 
        /* save register window and create stack frame (if necessary) */
 
-       if (cd->stackframesize)
-               M_SAVE(REG_SP, -cd->stackframesize * 8, REG_SP);
-
+       if (cd->stackframesize) {
+               if (cd->stackframesize <= 4095)
+                       M_SAVE(REG_SP, -cd->stackframesize * 8, REG_SP);
+               else {
+                       M_ILD_INTERN(REG_ITMP3, REG_PV_CALLER, framesize_disp);
+                       M_SUB(REG_ZERO, REG_ITMP3, REG_ITMP3);
+                       M_SAVE_REG(REG_SP, REG_ITMP3, REG_SP);
+               }
+       }
 
        /* save callee saved float registers (none right now) */
 #if 0
@@ -1340,7 +1359,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ITMP1);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
                        emit_nullpointer_check(cd, iptr, s1);
-                       M_ILD(d, s1, OFFSET(java_arrayheader, size));
+                       M_ILD(d, s1, OFFSET(java_array_t, size));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1352,7 +1371,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_AADD(s2, s1, REG_ITMP3);
-                       M_BLDS(d, REG_ITMP3, OFFSET(java_bytearray, data[0]));
+                       M_BLDS(d, REG_ITMP3, OFFSET(java_bytearray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1365,7 +1384,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_AADD(s2, s1, REG_ITMP3);
                        M_AADD(s2, REG_ITMP3, REG_ITMP3);
-                       M_SLDU(d, REG_ITMP3, OFFSET(java_chararray, data[0]));
+                       M_SLDU(d, REG_ITMP3, OFFSET(java_chararray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;                  
 
@@ -1378,7 +1397,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_AADD(s2, s1, REG_ITMP3);
                        M_AADD(s2, REG_ITMP3, REG_ITMP3);
-                       M_SLDS(d, REG_ITMP3, OFFSET(java_shortarray, data[0]));
+                       M_SLDS(d, REG_ITMP3, OFFSET(java_shortarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1391,7 +1410,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ASLL_IMM(s2, 2, REG_ITMP3);
                        M_AADD(REG_ITMP3, s1, REG_ITMP3);
-                       M_ILD(d, REG_ITMP3, OFFSET(java_intarray, data[0]));
+                       M_ILD(d, REG_ITMP3, OFFSET(java_intarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1404,7 +1423,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ASLL_IMM(s2, 3, REG_ITMP3);
                        M_AADD(REG_ITMP3, s1, REG_ITMP3);
-                       M_LDX(d, REG_ITMP3, OFFSET(java_longarray, data[0]));
+                       M_LDX(d, REG_ITMP3, OFFSET(java_longarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1417,7 +1436,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ASLL_IMM(s2, 2, REG_ITMP3);
                        M_AADD(REG_ITMP3, s1, REG_ITMP3);
-                       M_FLD(d, REG_ITMP3, OFFSET(java_floatarray, data[0]));
+                       M_FLD(d, REG_ITMP3, OFFSET(java_floatarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1430,7 +1449,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ASLL_IMM(s2, 3, REG_ITMP3);
                        M_AADD(REG_ITMP3, s1, REG_ITMP3);
-                       M_DLD(d, REG_ITMP3, OFFSET(java_doublearray, data[0]));
+                       M_DLD(d, REG_ITMP3, OFFSET(java_doublearray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1443,7 +1462,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ASLL_IMM(s2, POINTERSHIFT, REG_ITMP3);
                        M_AADD(REG_ITMP3, s1, REG_ITMP3);
-                       M_ALD(d, REG_ITMP3, OFFSET(java_objectarray, data[0]));
+                       M_ALD(d, REG_ITMP3, OFFSET(java_objectarray_t, data[0]));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1456,7 +1475,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_AADD(s2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       M_BST(s3, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                       M_BST(s3, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
                        break;
 
                case ICMD_CASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1469,7 +1488,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(s2, s1, REG_ITMP1);
                        M_AADD(s2, REG_ITMP1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       M_SST(s3, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                       M_SST(s3, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                        break;
 
                case ICMD_IASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1481,7 +1500,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, 2, REG_ITMP2);
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
                        break;
 
                case ICMD_LASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1493,7 +1512,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, 3, REG_ITMP2);
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       M_STX_INTERN(s3, REG_ITMP1, OFFSET(java_longarray, data[0]));
+                       M_STX_INTERN(s3, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
                        break;
 
                case ICMD_FASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1505,7 +1524,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, 2, REG_ITMP2);
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP1);
-                       M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+                       M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
                        break;
 
                case ICMD_DASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1517,7 +1536,7 @@ bool codegen_emit(jitdata *jd)
                        M_ASLL_IMM(s2, 3, REG_ITMP2);
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP1);
-                       M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+                       M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
                        break;
 
 
@@ -1543,7 +1562,7 @@ bool codegen_emit(jitdata *jd)
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_AST_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       M_AST_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
                        break;
 
 
@@ -1554,7 +1573,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_AADD(s2, s1, REG_ITMP1);
-                       M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+                       M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
                        break;
 
                case ICMD_CASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1566,7 +1585,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_AADD(s2, s1, REG_ITMP1);
                        M_AADD(s2, REG_ITMP1, REG_ITMP1);
-                       M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray, data[0]));
+                       M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
                        break;
 
                case ICMD_IASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1577,7 +1596,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ASLL_IMM(s2, 2, REG_ITMP2);
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
-                       M_IST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_intarray, data[0]));
+                       M_IST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
                        break;
 
                case ICMD_LASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1588,7 +1607,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ASLL_IMM(s2, 3, REG_ITMP2);
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
-                       M_STX_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_longarray, data[0]));
+                       M_STX_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
                        break;
 
                case ICMD_AASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1599,7 +1618,7 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        M_ASLL_IMM(s2, POINTERSHIFT, REG_ITMP2);
                        M_AADD(REG_ITMP2, s1, REG_ITMP1);
-                       M_AST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+                       M_AST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
                        break;
                
 
index 9acf13b8b6a11bac0b70deed87a3630f297ab1f6..6686a772b726c5c74793860e769ef8f9e021a406 100644 (file)
 
 #include <assert.h>
 
+/* debug defines **************************************************************/
+#ifndef NDEBUG
+# define PASS13BIT(imm) (imm) & 0x1fff
+#else
+# define PASS13BIT(imm)
+#endif
+
+
 /* from md-abi.c */
 s4 nat_argintregs[INT_NATARG_CNT];
 
@@ -142,6 +150,7 @@ s4 nat_argintregs[INT_NATARG_CNT];
  */
 #define M_OP3(op,op3,rd,rs1,rs2,imm) \
        do { \
+               assert(check_13bit_imm(rs2)); \
                *((u4 *) cd->mcodeptr) =  ((((s4) (op)) << 30) | ((rd) << 25) | ((op3) << 19) | ((rs1) << 14) | ((imm)<<13) | (imm?((rs2)&0x1fff):(rs2)) ); \
                cd->mcodeptr += 4; \
        } while (0)
@@ -415,7 +424,7 @@ s4   get_lopart_disp(s4 disp);
                } \
                else { \
                        M_SETHI(sethi_part(~c), rd); \
-                       M_XOR_IMM(rd, setlo_part(c) | 0xffffffffffff1c00, rd); \
+                       M_XOR_IMM(rd, PASS13BIT(setlo_part(c) | 0xffffffffffff1c00), rd); \
                } \
        } while (0)
        
@@ -561,6 +570,7 @@ s4   get_lopart_disp(s4 disp);
 
 
 #define M_SAVE(rs1,rs2,rd)      M_OP3(0x02,0x3c,rd,rs1,rs2,IMM)
+#define M_SAVE_REG(rs1,rs2,rd)  M_OP3(0x02,0x3c,rd,rs1,rs2,REG)
 #define M_RESTORE(rs1,rs2,rd)   M_OP3(0x02,0x3d,rd,rs1,rs2,IMM)
 
 
@@ -625,7 +635,7 @@ s4   get_lopart_disp(s4 disp);
         } else { \
             M_SETHI(hi&0x3ffff8,rd); \
             M_AADD(rs,rd,rd); \
-            M_DLD_INTERN(rd,rd,lo); \
+            M_DLD_INTERN(rd,rd,PASS13BIT(lo)); \
         } \
     } while (0)
 /* Note for SETHI: sethi has a 22bit imm, only set upper 19 bits */ 
@@ -640,7 +650,7 @@ s4   get_lopart_disp(s4 disp);
         } else { \
             M_SETHI(hi&0x3ffff8,rd); \
             M_AADD(rs,rd,rd); \
-            M_FLD_INTERN(rd,rd,lo); \
+            M_FLD_INTERN(rd,rd,PASS13BIT(lo)); \
         } \
     } while (0)
 
@@ -655,7 +665,7 @@ s4   get_lopart_disp(s4 disp);
         } else { \
             M_SETHI(hi&0x3ffff8,REG_ITMP3); \
             M_AADD(rs,REG_ITMP3,REG_ITMP3); \
-            M_FST_INTERN(rd,REG_ITMP3,lo); \
+            M_FST_INTERN(rd,REG_ITMP3,PASS13BIT(lo)); \
         } \
     } while (0)
     
@@ -670,7 +680,7 @@ s4   get_lopart_disp(s4 disp);
         } else { \
             M_SETHI(hi&0x3ffff8,REG_ITMP3); \
             M_AADD(rs,REG_ITMP3,REG_ITMP3); \
-            M_DST_INTERN(rd,REG_ITMP3,lo); \
+            M_DST_INTERN(rd,REG_ITMP3,PASS13BIT(lo)); \
         } \
     } while (0)
     
index 9ce83232d23af68a87c6e7cf1eedc0b6b032a587..187dc8a7116cf0609d542f7d24c7d8a200872b00 100644 (file)
@@ -477,7 +477,7 @@ void emit_arithmetic_check(codegendata *cd, instruction *iptr, s4 reg)
 void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
 {
        if (INSTRUCTION_MUST_CHECK(iptr)) {
-               M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+               M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
                M_CMP(s2, REG_ITMP3);
                M_XBULT(3);
                M_NOP;
index 91a25d18df301f8f371765e51fd70462861edc2e..2eaa5089a449428b6a7177e873d2f5a5b114751f 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: stacktrace.c 8295 2007-08-11 17:57:24Z michi $
+   $Id: stacktrace.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -734,14 +734,14 @@ return_NULL:
 
 *******************************************************************************/
 
-java_objectarray *stacktrace_getClassContext(void)
+java_handle_objectarray_t *stacktrace_getClassContext(void)
 {
-       stacktracebuffer  *stb;
-       stacktrace_entry  *ste;
-       java_objectarray  *oa;
-       s4                 oalength;
-       s4                 i;
-       s4                 dumpsize;
+       stacktracebuffer          *stb;
+       stacktrace_entry          *ste;
+       java_handle_objectarray_t *oa;
+       s4                         oalength;
+       s4                         i;
+       s4                         dumpsize;
        CYCLES_STATS_DECLARE_AND_START
 
        /* mark start of dump memory area */
@@ -884,17 +884,17 @@ return_NULL:
 *******************************************************************************/
 
 #if defined(ENABLE_JAVASE)
-java_objectarray *stacktrace_getStack(void)
+java_handle_objectarray_t *stacktrace_getStack(void)
 {
-       stacktracebuffer  *stb;
-       stacktrace_entry  *ste;
-       java_objectarray  *oa;
-       java_objectarray  *classes;
-       java_objectarray  *methodnames;
-       classinfo         *c;
-       java_handle_t     *string;
-       s4                 i;
-       s4                 dumpsize;
+       stacktracebuffer          *stb;
+       stacktrace_entry          *ste;
+       java_handle_objectarray_t *oa;
+       java_handle_objectarray_t *classes;
+       java_handle_objectarray_t *methodnames;
+       classinfo                 *c;
+       java_handle_t             *string;
+       s4                         i;
+       s4                         dumpsize;
        CYCLES_STATS_DECLARE_AND_START
 
        /* mark start of dump memory area */
index ddf276232c90d6ccca88e600039dda930b5611f4..e2e993cbe76e9381d64c46beae2cdb1e820a8732 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: stacktrace.h 8299 2007-08-13 08:41:18Z michi $
+   $Id: stacktrace.h 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -105,7 +105,7 @@ struct stacktracebuffer {
 *******************************************************************************/
 
 typedef struct stacktracecontainer {
-       java_arrayheader        header;     /* default array header for the GC    */
+       java_array_t            header;     /* default array header for the GC    */
        struct stacktracebuffer stb;        /* let entries point to data below    */
        stacktrace_entry        data[1];    /* the actual array of entries        */
 } stacktracecontainer;
@@ -132,9 +132,9 @@ stacktracebuffer *stacktrace_create(stackframeinfo *sfi);
 stacktracecontainer *stacktrace_fillInStackTrace(void);
 
 #if defined(ENABLE_JAVASE)
-java_objectarray    *stacktrace_getClassContext(void);
-classinfo           *stacktrace_getCurrentClass(void);
-java_objectarray    *stacktrace_getStack(void);
+java_handle_objectarray_t *stacktrace_getClassContext(void);
+classinfo                 *stacktrace_getCurrentClass(void);
+java_handle_objectarray_t *stacktrace_getStack(void);
 #endif
 
 void stacktrace_print_trace_from_buffer(stacktracebuffer *stb);
index e538a50e3506055318295f3597d78ecd10e661ef..1b25eef14ea9a1dc66d6569726b1a10375a7c46c 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: codegen.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: codegen.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -1501,7 +1501,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ITMP1);
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
-                       M_ILD(d, s1, OFFSET(java_arrayheader, size));
+                       M_ILD(d, s1, OFFSET(java_array_t, size));
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1512,7 +1512,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movsbq_memindex_reg(cd, OFFSET(java_bytearray, data[0]), s1, s2, 0, d);
+                       emit_movsbq_memindex_reg(cd, OFFSET(java_bytearray_t, data[0]), s1, s2, 0, d);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1523,7 +1523,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movzwq_memindex_reg(cd, OFFSET(java_chararray, data[0]), s1, s2, 1, d);
+                       emit_movzwq_memindex_reg(cd, OFFSET(java_chararray_t, data[0]), s1, s2, 1, d);
                        emit_store_dst(jd, iptr, d);
                        break;                  
 
@@ -1534,7 +1534,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movswq_memindex_reg(cd, OFFSET(java_shortarray, data[0]), s1, s2, 1, d);
+                       emit_movswq_memindex_reg(cd, OFFSET(java_shortarray_t, data[0]), s1, s2, 1, d);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1545,7 +1545,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movl_memindex_reg(cd, OFFSET(java_intarray, data[0]), s1, s2, 2, d);
+                       emit_movl_memindex_reg(cd, OFFSET(java_intarray_t, data[0]), s1, s2, 2, d);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1556,7 +1556,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_mov_memindex_reg(cd, OFFSET(java_longarray, data[0]), s1, s2, 3, d);
+                       emit_mov_memindex_reg(cd, OFFSET(java_longarray_t, data[0]), s1, s2, 3, d);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1567,7 +1567,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP3);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movss_memindex_reg(cd, OFFSET(java_floatarray, data[0]), s1, s2, 2, d);
+                       emit_movss_memindex_reg(cd, OFFSET(java_floatarray_t, data[0]), s1, s2, 2, d);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1578,7 +1578,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_FTMP3);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movsd_memindex_reg(cd, OFFSET(java_doublearray, data[0]), s1, s2, 3, d);
+                       emit_movsd_memindex_reg(cd, OFFSET(java_doublearray_t, data[0]), s1, s2, 3, d);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1589,7 +1589,7 @@ bool codegen_emit(jitdata *jd)
                        d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_mov_memindex_reg(cd, OFFSET(java_objectarray, data[0]), s1, s2, 3, d);
+                       emit_mov_memindex_reg(cd, OFFSET(java_objectarray_t, data[0]), s1, s2, 3, d);
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1601,7 +1601,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       emit_movb_reg_memindex(cd, s3, OFFSET(java_bytearray, data[0]), s1, s2, 0);
+                       emit_movb_reg_memindex(cd, s3, OFFSET(java_bytearray_t, data[0]), s1, s2, 0);
                        break;
 
                case ICMD_CASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1611,7 +1611,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       emit_movw_reg_memindex(cd, s3, OFFSET(java_chararray, data[0]), s1, s2, 1);
+                       emit_movw_reg_memindex(cd, s3, OFFSET(java_chararray_t, data[0]), s1, s2, 1);
                        break;
 
                case ICMD_SASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1621,7 +1621,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       emit_movw_reg_memindex(cd, s3, OFFSET(java_shortarray, data[0]), s1, s2, 1);
+                       emit_movw_reg_memindex(cd, s3, OFFSET(java_shortarray_t, data[0]), s1, s2, 1);
                        break;
 
                case ICMD_IASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1631,7 +1631,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       emit_movl_reg_memindex(cd, s3, OFFSET(java_intarray, data[0]), s1, s2, 2);
+                       emit_movl_reg_memindex(cd, s3, OFFSET(java_intarray_t, data[0]), s1, s2, 2);
                        break;
 
                case ICMD_LASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1641,7 +1641,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       emit_mov_reg_memindex(cd, s3, OFFSET(java_longarray, data[0]), s1, s2, 3);
+                       emit_mov_reg_memindex(cd, s3, OFFSET(java_longarray_t, data[0]), s1, s2, 3);
                        break;
 
                case ICMD_FASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1651,7 +1651,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP3);
-                       emit_movss_reg_memindex(cd, s3, OFFSET(java_floatarray, data[0]), s1, s2, 2);
+                       emit_movss_reg_memindex(cd, s3, OFFSET(java_floatarray_t, data[0]), s1, s2, 2);
                        break;
 
                case ICMD_DASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1661,7 +1661,7 @@ bool codegen_emit(jitdata *jd)
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
                        s3 = emit_load_s3(jd, iptr, REG_FTMP3);
-                       emit_movsd_reg_memindex(cd, s3, OFFSET(java_doublearray, data[0]), s1, s2, 3);
+                       emit_movsd_reg_memindex(cd, s3, OFFSET(java_doublearray_t, data[0]), s1, s2, 3);
                        break;
 
                case ICMD_AASTORE:    /* ..., arrayref, index, value  ==> ...         */
@@ -1681,7 +1681,7 @@ bool codegen_emit(jitdata *jd)
                        s1 = emit_load_s1(jd, iptr, REG_ITMP1);
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        s3 = emit_load_s3(jd, iptr, REG_ITMP3);
-                       emit_mov_reg_memindex(cd, s3, OFFSET(java_objectarray, data[0]), s1, s2, 3);
+                       emit_mov_reg_memindex(cd, s3, OFFSET(java_objectarray_t, data[0]), s1, s2, 3);
                        break;
 
 
@@ -1691,7 +1691,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movb_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_bytearray, data[0]), s1, s2, 0);
+                       emit_movb_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_bytearray_t, data[0]), s1, s2, 0);
                        break;
 
                case ICMD_CASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1700,7 +1700,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_chararray, data[0]), s1, s2, 1);
+                       emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_chararray_t, data[0]), s1, s2, 1);
                        break;
 
                case ICMD_SASTORECONST:   /* ..., arrayref, index  ==> ...            */
@@ -1709,7 +1709,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_shortarray, data[0]), s1, s2, 1);
+                       emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_shortarray_t, data[0]), s1, s2, 1);
                        break;
 
                case ICMD_IASTORECONST: /* ..., arrayref, index  ==> ...              */
@@ -1718,7 +1718,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_movl_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_intarray, data[0]), s1, s2, 2);
+                       emit_movl_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_intarray_t, data[0]), s1, s2, 2);
                        break;
 
                case ICMD_LASTORECONST: /* ..., arrayref, index  ==> ...              */
@@ -1729,11 +1729,11 @@ bool codegen_emit(jitdata *jd)
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
 
                        if (IS_IMM32(iptr->sx.s23.s3.constval)) {
-                               emit_mov_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff), OFFSET(java_longarray, data[0]), s1, s2, 3);
+                               emit_mov_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff), OFFSET(java_longarray_t, data[0]), s1, s2, 3);
                        }
                        else {
-                               emit_movl_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff), OFFSET(java_longarray, data[0]), s1, s2, 3);
-                               emit_movl_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval >> 32), OFFSET(java_longarray, data[0]) + 4, s1, s2, 3);
+                               emit_movl_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff), OFFSET(java_longarray_t, data[0]), s1, s2, 3);
+                               emit_movl_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval >> 32), OFFSET(java_longarray_t, data[0]) + 4, s1, s2, 3);
                        }
                        break;
 
@@ -1743,7 +1743,7 @@ bool codegen_emit(jitdata *jd)
                        s2 = emit_load_s2(jd, iptr, REG_ITMP2);
                        /* implicit null-pointer check */
                        emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
-                       emit_mov_imm_memindex(cd, 0, OFFSET(java_objectarray, data[0]), s1, s2, 3);
+                       emit_mov_imm_memindex(cd, 0, OFFSET(java_objectarray_t, data[0]), s1, s2, 3);
                        break;
 
 
index 68242346a56b4b7b34219d19abdf65381a09ceea..bc2eb4ca79664f0568fa18345c0d92375a967890 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: emit.c 8267 2007-08-07 11:07:48Z twisti $
+   $Id: emit.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -353,7 +353,7 @@ void emit_arithmetic_check(codegendata *cd, instruction *iptr, s4 reg)
 void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
 {
        if (INSTRUCTION_MUST_CHECK(iptr)) {
-        M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+        M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
         M_ICMP(REG_ITMP3, s2);
                M_BULT(8);
                M_ALD_MEM(s2, EXCEPTION_HARDWARE_ARRAYINDEXOUTOFBOUNDS);
index a0348a03cc51fe9ee4bcae0199ec2d1a8799a589..7f0230980f21deed6f900436da43f6273a02b943 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: signal.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: signal.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -128,18 +128,18 @@ bool signal_init(void)
 # endif
                /* SIGSEGV handler */
 
-               signal_register_signal(SIGSEGV, (void *) md_signal_handler_sigsegv,
+               signal_register_signal(SIGSEGV, (functionptr) md_signal_handler_sigsegv,
                                                           SA_NODEFER | SA_SIGINFO);
 
 #  if defined(SIGBUS)
-               signal_register_signal(SIGBUS, (void *) md_signal_handler_sigsegv,
+               signal_register_signal(SIGBUS, (functionptr) md_signal_handler_sigsegv,
                                                           SA_NODEFER | SA_SIGINFO);
 #  endif
 
 #  if SUPPORT_HARDWARE_DIVIDE_BY_ZERO
                /* SIGFPE handler */
 
-               signal_register_signal(SIGFPE, (void *) md_signal_handler_sigfpe,
+               signal_register_signal(SIGFPE, (functionptr) md_signal_handler_sigfpe,
                                                           SA_NODEFER | SA_SIGINFO);
 #  endif
 
@@ -147,7 +147,7 @@ bool signal_init(void)
                /* XXX use better defines for that (in arch.h) */
                /* SIGILL handler */
 
-               signal_register_signal(SIGILL, (void *) md_signal_handler_sigill,
+               signal_register_signal(SIGILL, (functionptr) md_signal_handler_sigill,
                                                           SA_NODEFER | SA_SIGINFO);
 #  endif
 
@@ -155,7 +155,7 @@ bool signal_init(void)
                /* XXX use better defines for that (in arch.h) */
                /* SIGTRAP handler */
 
-               signal_register_signal(SIGTRAP, (void *) md_signal_handler_sigtrap,
+               signal_register_signal(SIGTRAP, (functionptr) md_signal_handler_sigtrap,
                                                           SA_NODEFER | SA_SIGINFO);
 #  endif
 # if defined(ENABLE_INTRP)
@@ -166,7 +166,7 @@ bool signal_init(void)
 #if defined(ENABLE_THREADS)
        /* SIGHUP handler for threads_thread_interrupt */
 
-       signal_register_signal(SIGHUP, (void *) signal_handler_sighup, 0);
+       signal_register_signal(SIGHUP, (functionptr) signal_handler_sighup, 0);
 #endif
 
 #if defined(ENABLE_THREADS) && defined(ENABLE_GC_CACAO)
@@ -180,7 +180,7 @@ bool signal_init(void)
 #if defined(ENABLE_THREADS) && defined(ENABLE_PROFILING)
        /* SIGUSR2 handler for profiling sampling */
 
-       signal_register_signal(SIGUSR2, (void *) md_signal_handler_sigusr2,
+       signal_register_signal(SIGUSR2, (functionptr) md_signal_handler_sigusr2,
                                                   SA_SIGINFO);
 #endif
 
@@ -196,7 +196,7 @@ bool signal_init(void)
 
 *******************************************************************************/
 
-void signal_register_signal(int signum, void *handler, int flags)
+void signal_register_signal(int signum, functionptr handler, int flags)
 {
        struct sigaction act;
        void (*function)(int, siginfo_t *, void *);
index 24a1448008071745cf2ec1def17fed2128b53759..aa4e05f461a967c47c83d2ca44b62a4a07619eb6 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: signallocal.h 8299 2007-08-13 08:41:18Z michi $
+   $Id: signallocal.h 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -40,7 +40,7 @@
 /* function prototypes ********************************************************/
 
 bool  signal_init(void);
-void  signal_register_signal(int signum, void *handler, int flags);
+void  signal_register_signal(int signum, functionptr handler, int flags);
 void *signal_handle(void *xpc, int type, intptr_t val);
 bool  signal_start_thread(void);
 
index 8f13e685e7545550ca8b54cb2a8dbdc08479c529..b34e0ad9e48269a1e728cdf455843c17cabbfc23 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: string.c 8295 2007-08-11 17:57:24Z michi $
+   $Id: string.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -104,9 +104,9 @@ bool string_init(void)
  
 void stringtable_update(void)
 {
-       java_lang_String *js;   
-       java_chararray *a;
-       literalstring *s;       /* hashtable entry */
+       java_lang_String *js;
+       java_chararray_t *a;
+       literalstring    *s;       /* hashtable entry */
        int i;
 
        for (i = 0; i < hashtable_string.size; i++) {
@@ -162,7 +162,7 @@ static java_handle_t *javastring_new_from_utf_buffer(const char *buffer,
        u4 utflength;                   /* length of utf-string if uncompressed   */
        java_handle_t     *o;
        java_lang_String  *s;           /* result-string                          */
-       java_chararray    *a;
+       java_handle_chararray_t *a;
        u4 i;
 
        assert(buffer);
@@ -182,7 +182,7 @@ static java_handle_t *javastring_new_from_utf_buffer(const char *buffer,
        utf_ptr = buffer;
 
        for (i = 0; i < utflength; i++)
-               a->data[i] = utf_nextu2((char **) &utf_ptr);
+               LLNI_array_direct(a, i) = utf_nextu2((char **) &utf_ptr);
        
        /* set fields of the javastring-object */
 
@@ -213,9 +213,9 @@ static java_handle_t *javastring_new_from_utf_buffer(const char *buffer,
 
 java_handle_t *javastring_safe_new_from_utf8(const char *text)
 {
-       java_handle_t    *o;
-       java_chararray   *a;
-       java_lang_String *s;
+       java_handle_t           *o;
+       java_handle_chararray_t *a;
+       java_lang_String        *s;
        s4 nbytes;
        s4 len;
 
@@ -292,9 +292,9 @@ java_handle_t *javastring_new(utf *u)
 {
        char *utf_ptr;                  /* current utf character in utf string    */
        u4 utflength;                   /* length of utf-string if uncompressed   */
-       java_handle_t    *o;
-       java_chararray   *a;
-       java_lang_String *s;
+       java_handle_t           *o;
+       java_handle_chararray_t *a;
+       java_lang_String        *s;
        s4 i;
 
        if (u == NULL) {
@@ -316,7 +316,7 @@ java_handle_t *javastring_new(utf *u)
        /* decompress utf-string */
 
        for (i = 0; i < utflength; i++)
-               a->data[i] = utf_nextu2(&utf_ptr);
+               LLNI_array_direct(a, i) = utf_nextu2(&utf_ptr);
        
        /* set fields of the javastring-object */
 
@@ -343,9 +343,9 @@ java_handle_t *javastring_new_slash_to_dot(utf *u)
 {
        char *utf_ptr;                  /* current utf character in utf string    */
        u4 utflength;                   /* length of utf-string if uncompressed   */
-       java_handle_t    *o;
-       java_chararray   *a;
-       java_lang_String *s;
+       java_handle_t           *o;
+       java_handle_chararray_t *a;
+       java_lang_String        *s;
        s4 i;
        u2 ch;
 
@@ -370,7 +370,7 @@ java_handle_t *javastring_new_slash_to_dot(utf *u)
                ch = utf_nextu2(&utf_ptr);
                if (ch == '/')
                        ch = '.';
-               a->data[i] = ch;
+               LLNI_array_direct(a, i) = ch;
        }
        
        /* set fields of the javastring-object */
@@ -403,9 +403,9 @@ java_handle_t *javastring_new_from_ascii(const char *text)
 {
        s4 i;
        s4 len;                             /* length of the string               */
-       java_handle_t    *o;
-       java_lang_String *s;
-       java_chararray   *a;
+       java_handle_t           *o;
+       java_lang_String        *s;
+       java_handle_chararray_t *a;
 
        if (text == NULL) {
                exceptions_throw_nullpointerexception();
@@ -425,7 +425,7 @@ java_handle_t *javastring_new_from_ascii(const char *text)
        /* copy text */
 
        for (i = 0; i < len; i++)
-               a->data[i] = text[i];
+               LLNI_array_direct(a, i) = text[i];
        
        /* set fields of the javastring-object */
 
@@ -451,8 +451,8 @@ java_handle_t *javastring_new_from_ascii(const char *text)
 
 char *javastring_tochar(java_handle_t *so) 
 {
-       java_lang_String *s = (java_lang_String *) so;
-       java_chararray *a;
+       java_lang_String        *s = (java_lang_String *) so;
+       java_handle_chararray_t *a;
        char *buf;
        s4 i;
        
@@ -503,12 +503,12 @@ utf *javastring_toutf(java_handle_t *string, bool isclassname)
 
 *******************************************************************************/
 
-java_object_t *literalstring_u2(java_chararray *a, u4 length, u4 offset,
-                                                                       bool copymode)
+java_object_t *literalstring_u2(java_chararray_t *a, u4 length, u4 offset,
+                                                               bool copymode)
 {
     literalstring    *s;                /* hashtable element                  */
     java_lang_String *js;               /* u2-array wrapped in javastring     */
-    java_chararray   *ca;               /* copy of u2-array                   */
+    java_chararray_t *ca;               /* copy of u2-array                   */
     u4                key;
     u4                slot;
     u2                i;
@@ -534,7 +534,7 @@ java_object_t *literalstring_u2(java_chararray *a, u4 length, u4 offset,
                        /* string already in hashtable, free memory */
 
                        if (!copymode)
-                               mem_free(a, sizeof(java_chararray) + sizeof(u2) * (length - 1) + 10);
+                               mem_free(a, sizeof(java_chararray_t) + sizeof(u2) * (length - 1) + 10);
 
                        LOCK_MONITOR_EXIT(lock_hashtable_string);
 
@@ -548,10 +548,10 @@ java_object_t *literalstring_u2(java_chararray *a, u4 length, u4 offset,
 
     if (copymode) {
                /* create copy of u2-array for new javastring */
-               u4 arraysize = sizeof(java_chararray) + sizeof(u2) * (length - 1) + 10;
+               u4 arraysize = sizeof(java_chararray_t) + sizeof(u2) * (length - 1) + 10;
                ca = mem_alloc(arraysize);
 /*             memcpy(ca, a, arraysize); */
-               memcpy(&(ca->header), &(a->header), sizeof(java_arrayheader));
+               memcpy(&(ca->header), &(a->header), sizeof(java_array_t));
                memcpy(&(ca->data), &(a->data) + offset, sizeof(u2) * (length - 1) + 10);
 
     } else {
@@ -658,17 +658,17 @@ java_object_t *literalstring_u2(java_chararray *a, u4 length, u4 offset,
 
 java_object_t *literalstring_new(utf *u)
 {
-    char           *utf_ptr;         /* pointer to current unicode character  */
+    char             *utf_ptr;       /* pointer to current unicode character  */
                                         /* utf string                            */
-    u4              utflength;       /* length of utf-string if uncompressed  */
-    java_chararray *a;               /* u2-array constructed from utf string  */
-    u4              i;
+    u4                utflength;     /* length of utf-string if uncompressed  */
+    java_chararray_t *a;             /* u2-array constructed from utf string  */
+    u4                i;
 
        utf_ptr = u->text;
        utflength = utf_get_number_of_u2s(u);
 
     /* allocate memory */ 
-    a = mem_alloc(sizeof(java_chararray) + sizeof(u2) * (utflength - 1) + 10);
+    a = mem_alloc(sizeof(java_chararray_t) + sizeof(u2) * (utflength - 1) + 10);
 
     /* convert utf-string to u2-array */
     for (i = 0; i < utflength; i++)
@@ -687,7 +687,7 @@ java_object_t *literalstring_new(utf *u)
 void literalstring_free(java_object_t* string)
 {
        java_lang_String *s;
-       java_chararray *a;
+       java_chararray_t *a;
 
        s = (java_lang_String *) string;
        a = s->value;
@@ -696,7 +696,7 @@ void literalstring_free(java_object_t* string)
        FREE(s, java_lang_String);
 
        /* dispose memory of java-characterarray */
-       FREE(a, sizeof(java_chararray) + sizeof(u2) * (a->header.size - 1)); /* +10 ?? */
+       FREE(a, sizeof(java_chararray_t) + sizeof(u2) * (a->header.size - 1)); /* +10 ?? */
 }
 
 
index 88b09d74d1458f1cc412596cdd369223ac40ced5..64c68cb96469810d87a75ae8b5476449ed225baa 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: stringlocal.h 8295 2007-08-11 17:57:24Z michi $
+   $Id: stringlocal.h 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -84,8 +84,8 @@ char *javastring_tochar(java_handle_t *string);
 utf *javastring_toutf(java_handle_t *string, bool isclassname);
 
 /* creates a new javastring with the text of the u2-array */
-java_object_t *literalstring_u2(java_chararray *a, u4 length, u4 offset,
-                                                                       bool copymode);
+java_object_t *literalstring_u2(java_chararray_t *a, u4 length, u4 offset,
+                                                               bool copymode);
 
 /* creates a new javastring with the text of the utf-symbol */
 java_object_t *literalstring_new(utf *u);
index 7438df18987655d4162f7f34030f456adf9d833a..0dbe62b71234e31455a248a4157563d82e39c244 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: vm.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: vm.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -1812,16 +1812,16 @@ bool vm_create(JavaVMInitArgs *vm_args)
 
 void vm_run(JavaVM *vm, JavaVMInitArgs *vm_args)
 {
-       utf               *mainutf;
-       classinfo         *mainclass;
-       java_handle_t     *e;
-       methodinfo        *m;
-       java_objectarray  *oa; 
-       s4                 oalength;
-       utf               *u;
-       java_handle_t     *s;
-       s4                 status;
-       s4                 i;
+       utf                       *mainutf;
+       classinfo                 *mainclass;
+       java_handle_t             *e;
+       methodinfo                *m;
+       java_handle_objectarray_t *oa; 
+       s4                         oalength;
+       utf                       *u;
+       java_handle_t             *s;
+       s4                         status;
+       s4                         i;
 
 #if !defined(NDEBUG)
        if (compileall) {
@@ -1913,7 +1913,7 @@ void vm_run(JavaVM *vm, JavaVMInitArgs *vm_args)
                u = utf_new_char(vm_args->options[opt_index + i].optionString);
                s = javastring_new(u);
 
-               oa->data[i] = s;
+               LLNI_objectarray_element_set(oa, i, s);
        }
 
 #ifdef TYPEINFO_DEBUG_TEST
@@ -2712,13 +2712,13 @@ static uint64_t *vm_array_from_jvalue(methodinfo *m, java_object_t *o,
 *******************************************************************************/
 
 uint64_t *vm_array_from_objectarray(methodinfo *m, java_object_t *o,
-                                                                       java_objectarray *params)
+                                                                       java_handle_objectarray_t *params)
 {
        methoddesc    *md;
        paramdesc     *pd;
        typedesc      *td;
        uint64_t      *array;
-       java_object_t *param;
+       java_handle_t *param;
        classinfo     *c;
        int32_t        i;
        int32_t        j;
@@ -2748,7 +2748,7 @@ uint64_t *vm_array_from_objectarray(methodinfo *m, java_object_t *o,
        }
 
        for (j = 0; i < md->paramcount; i++, j++, pd++, td++) {
-               param = params->data[j];
+               LLNI_objectarray_element_get(params, j, param);
 
                switch (td->type) {
                case TYPE_INT:
index 1c78bd6dfb1079614cb8021d82ff6d68c14523b3..8e2a1a810ba75b6da0b57e13b8a1aab41523b416 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: vm.h 8295 2007-08-11 17:57:24Z michi $
+   $Id: vm.h 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -87,7 +87,7 @@ void vm_abort(const char *text, ...);
 /* Java method calling functions */
 
 uint64_t *vm_array_from_objectarray(methodinfo *m, java_handle_t *o,
-                                                                       java_objectarray *params);
+                                                                       java_handle_objectarray_t *params);
 
 java_handle_t *vm_call_method(methodinfo *m, java_handle_t *o, ...);
 java_handle_t *vm_call_method_valist(methodinfo *m, java_handle_t *o,
index eedf0bc98f58c7eeeba8f40efaf3610477f8259a..d00a40953523f5fb670db565ebdaa1d64236e8ff 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: class.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: class.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
 
 #include "mm/memory.h"
 
+#include "native/llni.h"
+
 #include "threads/lock-common.h"
 
 #include "toolbox/logging.h"
 
+#include "vm/builtin.h"
 #include "vm/exceptions.h"
 #include "vm/global.h"
 #include "vm/resolve.h"
@@ -1666,6 +1669,82 @@ classinfo *class_get_superclass(classinfo *c)
 }
 
 
+/* class_get_declaredclasses ***************************************************
+
+   Return an array of declared classes of the given class.
+
+*******************************************************************************/
+
+java_handle_objectarray_t *class_get_declaredclasses(classinfo *c, bool publicOnly)
+{
+       classref_or_classinfo  inner;
+       classref_or_classinfo  outer;
+       utf                   *outername;
+       int                    declaredclasscount;  /* number of declared classes */
+       int                    pos;                     /* current declared class */
+       java_handle_objectarray_t *oa;               /* array of declared classes */
+       int                    i;
+       classinfo             *ic;
+
+       declaredclasscount = 0;
+
+       if (!class_is_primitive(c) && !class_is_array(c)) {
+               /* Determine number of declared classes. */
+
+               for (i = 0; i < c->innerclasscount; i++) {
+                       outer = c->innerclass[i].outer_class;
+
+                       /* Check if outer_class is a classref or a real class and
+               get the class name from the structure. */
+
+                       outername = IS_CLASSREF(outer) ? outer.ref->name : outer.cls->name;
+
+                       /* Outer class is this class. */
+
+                       if ((outername == c->name) &&
+                               ((publicOnly == 0) || (c->innerclass[i].flags & ACC_PUBLIC)))
+                               declaredclasscount++;
+               }
+       }
+
+       /* Allocate Class[] and check for OOM. */
+
+       oa = builtin_anewarray(declaredclasscount, class_java_lang_Class);
+
+       if (oa == NULL)
+               return NULL;
+
+       for (i = 0, pos = 0; i < c->innerclasscount; i++) {
+               inner = c->innerclass[i].inner_class;
+               outer = c->innerclass[i].outer_class;
+
+               /* Check if outer_class is a classref or a real class and get
+                  the class name from the structure. */
+
+               outername = IS_CLASSREF(outer) ? outer.ref->name : outer.cls->name;
+
+               /* Outer class is this class. */
+
+               if ((outername == c->name) &&
+                       ((publicOnly == 0) || (c->innerclass[i].flags & ACC_PUBLIC))) {
+
+                       ic = resolve_classref_or_classinfo_eager(inner, false);
+
+                       if (ic == NULL)
+                               return NULL;
+
+                       if (!(ic->state & CLASS_LINKED))
+                               if (!link_class(ic))
+                                       return NULL;
+
+                       LLNI_array_direct(oa, pos++) = (java_object_t *) ic;
+               }
+       }
+
+       return oa;
+}
+
+
 /* class_get_declaringclass ****************************************************
 
    If the class or interface given is a member of another class,
@@ -1725,6 +1804,37 @@ classinfo *class_get_declaringclass(classinfo *c)
 }
 
 
+/* class_get_interfaces ********************************************************
+
+   Return an array of interfaces of the given class.
+
+*******************************************************************************/
+
+java_handle_objectarray_t *class_get_interfaces(classinfo *c)
+{
+       classinfo                 *ic;
+       java_handle_objectarray_t *oa;
+       u4                         i;
+
+       if (!(c->state & CLASS_LINKED))
+               if (!link_class(c))
+                       return NULL;
+
+       oa = builtin_anewarray(c->interfacescount, class_java_lang_Class);
+
+       if (oa == NULL)
+               return NULL;
+
+       for (i = 0; i < c->interfacescount; i++) {
+               ic = c->interfaces[i].cls;
+
+               LLNI_array_direct(oa, i) = (java_object_t *) ic;
+       }
+
+       return oa;
+}
+
+
 /* class_get_signature *********************************************************
 
    Return the signature of the given class.  For array and primitive
index ac24cd1e836ac80c4e4fab61065f22fa7d329b8d..3b038ac0d0a8a6a5888ece973fe98a9bc207dbba 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: class.h 8299 2007-08-13 08:41:18Z michi $
+   $Id: class.h 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -356,16 +356,19 @@ methodinfo *class_resolvemethod(classinfo *c, utf *name, utf *dest);
 methodinfo *class_resolveclassmethod(classinfo *c, utf *name, utf *dest, classinfo *referer, bool throwexception);
 methodinfo *class_resolveinterfacemethod(classinfo *c, utf *name, utf *dest, classinfo *referer, bool throwexception);
 
-bool       class_issubclass(classinfo *sub, classinfo *super);
-bool       class_isanysubclass(classinfo *sub, classinfo *super);
-bool       class_is_primitive(classinfo *c);
-bool       class_is_array(classinfo *c);
-bool       class_is_interface(classinfo *c);
-classinfo *class_get_superclass(classinfo *c);
-classinfo *class_get_declaringclass(classinfo *c);
+bool              class_issubclass(classinfo *sub, classinfo *super);
+bool              class_isanysubclass(classinfo *sub, classinfo *super);
+bool              class_is_primitive(classinfo *c);
+bool              class_is_array(classinfo *c);
+bool              class_is_interface(classinfo *c);
+
+classinfo                 *class_get_superclass(classinfo *c);
+java_handle_objectarray_t *class_get_declaredclasses(classinfo *c, bool publicOnly);
+classinfo                 *class_get_declaringclass(classinfo *c);
+java_handle_objectarray_t *class_get_interfaces(classinfo *c);
 
 #if defined(ENABLE_JAVASE)
-utf       *class_get_signature(classinfo *c);
+utf              *class_get_signature(classinfo *c);
 #endif
 
 /* some debugging functions */
index 98e29f2a6a6ebaee94f69dfc26c0fe30ca05759d..5cd1a6e6cc90a95132cb41a87fdc37ee12b01f0d 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: field.c 8288 2007-08-10 15:12:00Z twisti $
+   $Id: field.c 8315 2007-08-15 22:49:20Z panzi $
 
 */
 
@@ -39,6 +39,7 @@
 
 #include "mm/memory.h"
 
+#include "vm/builtin.h"
 #include "vm/exceptions.h"
 #include "vm/global.h"
 #include "vm/primitive.h"
@@ -392,17 +393,26 @@ void field_free(fieldinfo *f)
 
 *******************************************************************************/
 
-annotation_bytearray_t *field_get_annotations(fieldinfo *f)
+java_bytearray *field_get_annotations(fieldinfo *f)
 {
-       classinfo *c = f->class;
-       int slot = f - c->fields;
-
-       if (c->field_annotations != NULL &&
-           c->field_annotations->size > slot) {
-               return c->field_annotations->data[slot];
+       classinfo              *c           = f->class;
+       int                     slot        = f - c->fields;
+       annotation_bytearray_t *ba          = NULL;
+       java_bytearray         *annotations = NULL;
+       
+       if (c->field_annotations != NULL && c->field_annotations->size > slot) {
+               ba = c->field_annotations->data[slot];
+               
+               if (ba != NULL) {
+                       annotations = builtin_newarray_byte(ba->size);
+                       
+                       if (annotations != NULL) {
+                               MCOPY(annotations->data, ba->data, uint8_t, ba->size);
+                       }
+               }
        }
-
-       return NULL;
+       
+       return annotations;
 }
 #endif
 
index dce84cefefa0055cdd02ac2e635eda03bad435d3..7eb3df5a17f4c437d206fbc6f770c401e9e336d0 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: field.h 8268 2007-08-07 13:24:43Z twisti $
+   $Id: field.h 8315 2007-08-15 22:49:20Z panzi $
 */
 
 
@@ -77,7 +77,7 @@ classinfo *field_get_type(fieldinfo *f);
 void       field_free(fieldinfo *f);
 
 #if defined(ENABLE_ANNOTATIONS)
-annotation_bytearray_t *field_get_annotations(fieldinfo *f);
+java_bytearray *field_get_annotations(fieldinfo *f);
 #endif
 
 #if !defined(NDEBUG)
index 2d9d9bd3eec0bb62456e521f2b38f321baca18d9..6c8d2d81cab40b3c2ed3b6e61ffacc018548cd05 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: linker.c 8299 2007-08-13 08:41:18Z michi $
+   $Id: linker.c 8321 2007-08-16 11:37:25Z michi $
 
 */
 
@@ -1039,7 +1039,7 @@ static arraydescriptor *link_array(classinfo *c)
                /* c is an array of references */
                desc->arraytype = ARRAYTYPE_OBJECT;
                desc->componentsize = sizeof(void*);
-               desc->dataoffset = OFFSET(java_objectarray, data);
+               desc->dataoffset = OFFSET(java_objectarray_t, data);
                
                compvftbl = comp->vftbl;
 
@@ -1072,49 +1072,49 @@ static arraydescriptor *link_array(classinfo *c)
                switch (c->name->text[1]) {
                case 'Z':
                        desc->arraytype = ARRAYTYPE_BOOLEAN;
-                       desc->dataoffset = OFFSET(java_booleanarray,data);
+                       desc->dataoffset = OFFSET(java_booleanarray_t,data);
                        desc->componentsize = sizeof(u1);
                        break;
 
                case 'B':
                        desc->arraytype = ARRAYTYPE_BYTE;
-                       desc->dataoffset = OFFSET(java_bytearray,data);
+                       desc->dataoffset = OFFSET(java_bytearray_t,data);
                        desc->componentsize = sizeof(u1);
                        break;
 
                case 'C':
                        desc->arraytype = ARRAYTYPE_CHAR;
-                       desc->dataoffset = OFFSET(java_chararray,data);
+                       desc->dataoffset = OFFSET(java_chararray_t,data);
                        desc->componentsize = sizeof(u2);
                        break;
 
                case 'D':
                        desc->arraytype = ARRAYTYPE_DOUBLE;
-                       desc->dataoffset = OFFSET(java_doublearray,data);
+                       desc->dataoffset = OFFSET(java_doublearray_t,data);
                        desc->componentsize = sizeof(double);
                        break;
 
                case 'F':
                        desc->arraytype = ARRAYTYPE_FLOAT;
-                       desc->dataoffset = OFFSET(java_floatarray,data);
+                       desc->dataoffset = OFFSET(java_floatarray_t,data);
                        desc->componentsize = sizeof(float);
                        break;
 
                case 'I':
                        desc->arraytype = ARRAYTYPE_INT;
-                       desc->dataoffset = OFFSET(java_intarray,data);
+                       desc->dataoffset = OFFSET(java_intarray_t,data);
                        desc->componentsize = sizeof(s4);
                        break;
 
                case 'J':
                        desc->arraytype = ARRAYTYPE_LONG;
-                       desc->dataoffset = OFFSET(java_longarray,data);
+                       desc->dataoffset = OFFSET(java_longarray_t,data);
                        desc->componentsize = sizeof(s8);
                        break;
 
                case 'S':
                        desc->arraytype = ARRAYTYPE_SHORT;
-                       desc->dataoffset = OFFSET(java_shortarray,data);
+                       desc->dataoffset = OFFSET(java_shortarray_t,data);
                        desc->componentsize = sizeof(s2);
                        break;
 
index 87715ad96a343e2b898a231744a73d3041d11b6a..d4ff6655bc5e32e8493470f92c53b96a8a01b096 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: method.c 8295 2007-08-11 17:57:24Z michi $
+   $Id: method.c 8318 2007-08-16 10:05:34Z michi $
 
 */
 
@@ -37,6 +37,8 @@
 
 #include "mm/memory.h"
 
+#include "native/llni.h"
+
 #include "threads/lock-common.h"
 
 #include "vm/builtin.h"
@@ -624,14 +626,14 @@ int32_t method_get_parametercount(methodinfo *m)
 
 *******************************************************************************/
 
-java_objectarray *method_get_parametertypearray(methodinfo *m)
+java_handle_objectarray_t *method_get_parametertypearray(methodinfo *m)
 {
-       methoddesc       *md;
-       typedesc         *paramtypes;
-       int32_t           paramcount;
-       java_objectarray *oa;
-       int32_t           i;
-       classinfo        *c;
+       methoddesc                *md;
+       typedesc                  *paramtypes;
+       int32_t                    paramcount;
+       java_handle_objectarray_t *oa;
+       int32_t                    i;
+       classinfo                 *c;
 
        md = m->parseddesc;
 
@@ -664,7 +666,7 @@ java_objectarray *method_get_parametertypearray(methodinfo *m)
                if (!resolve_class_from_typedesc(&paramtypes[i], true, false, &c))
                        return NULL;
 
-               oa->data[i] = c;
+               LLNI_array_direct(oa, i) = (java_object_t *) c;
        }
 
        return oa;
@@ -677,11 +679,11 @@ java_objectarray *method_get_parametertypearray(methodinfo *m)
 
 *******************************************************************************/
 
-java_objectarray *method_get_exceptionarray(methodinfo *m)
+java_handle_objectarray_t *method_get_exceptionarray(methodinfo *m)
 {
-       java_objectarray *oa;
-       classinfo        *c;
-       s4                i;
+       java_handle_objectarray_t *oa;
+       classinfo                 *c;
+       s4                         i;
 
        /* create class-array */
 
@@ -698,7 +700,7 @@ java_objectarray *method_get_exceptionarray(methodinfo *m)
                if (c == NULL)
                        return NULL;
 
-               oa->data[i] = c;
+               LLNI_array_direct(oa, i) = (java_object_t *) c;
        }
 
        return oa;
@@ -781,16 +783,26 @@ s4 method_count_implementations(methodinfo *m, classinfo *c, methodinfo **found)
 
 *******************************************************************************/
 
-annotation_bytearray_t *method_get_annotations(methodinfo *m)
+java_bytearray *method_get_annotations(methodinfo *m)
 {
-       classinfo *c = m->class;
-       int slot = m - c->methods;
-
+       classinfo              *c           = m->class;
+       int                     slot        = m - c->methods;
+       annotation_bytearray_t *ba          = NULL;
+       java_bytearray         *annotations = NULL;
+       
        if (c->method_annotations != NULL && c->method_annotations->size > slot) {
-               return c->method_annotations->data[slot];
+               ba = c->method_annotations->data[slot];
+               
+               if (ba != NULL) {
+                       annotations = builtin_newarray_byte(ba->size);
+                       
+                       if (annotations != NULL) {
+                               MCOPY(annotations->data, ba->data, uint8_t, ba->size);
+                       }
+               }
        }
-
-       return NULL;
+       
+       return annotations;
 }
 
 
@@ -800,17 +812,27 @@ annotation_bytearray_t *method_get_annotations(methodinfo *m)
 
 *******************************************************************************/
 
-annotation_bytearray_t *method_get_parameterannotations(methodinfo *m)
+java_bytearray *method_get_parameterannotations(methodinfo *m)
 {
-       classinfo *c = m->class;
-       int slot = m - c->methods;
+       classinfo              *c                    = m->class;
+       int                     slot                 = m - c->methods;
+       annotation_bytearray_t *ba                   = NULL;
+       java_bytearray         *parameterAnnotations = NULL;
 
        if (c->method_parameterannotations != NULL &&
                c->method_parameterannotations->size > slot) {
-               return c->method_parameterannotations->data[slot];
+               ba = c->method_parameterannotations->data[slot];
+               
+               if (ba != NULL) {
+                       parameterAnnotations = builtin_newarray_byte(ba->size);
+                       
+                       if (parameterAnnotations != NULL) {
+                               MCOPY(parameterAnnotations->data, ba->data, uint8_t, ba->size);
+                       }
+               }
        }
-
-       return NULL;
+       
+       return parameterAnnotations;
 }
 
 
@@ -820,17 +842,27 @@ annotation_bytearray_t *method_get_parameterannotations(methodinfo *m)
 
 *******************************************************************************/
 
-annotation_bytearray_t *method_get_annotationdefault(methodinfo *m)
+java_bytearray *method_get_annotationdefault(methodinfo *m)
 {
-       classinfo *c = m->class;
-       int slot = m - c->methods;
+       classinfo              *c                 = m->class;
+       int                     slot              = m - c->methods;
+       annotation_bytearray_t *ba                = NULL;
+       java_bytearray         *annotationDefault = NULL;
 
        if (c->method_annotationdefaults != NULL &&
                c->method_annotationdefaults->size > slot) {
-               return c->method_annotationdefaults->data[slot];
+               ba = c->method_annotationdefaults->data[slot];
+               
+               if (ba != NULL) {
+                       annotationDefault = builtin_newarray_byte(ba->size);
+                       
+                       if (annotationDefault != NULL) {
+                               MCOPY(annotationDefault->data, ba->data, uint8_t, ba->size);
+                       }
+               }
        }
-
-       return NULL;
+       
+       return annotationDefault;
 }
 #endif
 
index af9930d54bc6ce18341379f56e453aa37fc84727..5c505cf663cdd96078b20abf01774bef3b22dcb3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: method.h 8295 2007-08-11 17:57:24Z michi $
+   $Id: method.h 8318 2007-08-16 10:05:34Z michi $
 */
 
 
@@ -164,10 +164,10 @@ bool method_canoverwrite(methodinfo *m, methodinfo *old);
 
 methodinfo *method_vftbl_lookup(vftbl_t *vftbl, methodinfo* m);
 
-int32_t           method_get_parametercount(methodinfo *m);
-java_objectarray *method_get_parametertypearray(methodinfo *m);
-java_objectarray *method_get_exceptionarray(methodinfo *m);
-classinfo        *method_returntype_get(methodinfo *m);
+int32_t                    method_get_parametercount(methodinfo *m);
+java_handle_objectarray_t *method_get_parametertypearray(methodinfo *m);
+java_handle_objectarray_t *method_get_exceptionarray(methodinfo *m);
+classinfo                 *method_returntype_get(methodinfo *m);
 
 void method_add_assumption_monomorphic(methodinfo *m, methodinfo *caller);
 void method_break_assumption_monomorphic(methodinfo *m, method_worklist **wl);
@@ -175,9 +175,9 @@ void method_break_assumption_monomorphic(methodinfo *m, method_worklist **wl);
 s4   method_count_implementations(methodinfo *m, classinfo *c, methodinfo **found);
 
 #if defined(ENABLE_ANNOTATIONS)
-annotation_bytearray_t *method_get_annotations(methodinfo *m);
-annotation_bytearray_t *method_get_parameterannotations(methodinfo *m);
-annotation_bytearray_t *method_get_annotationdefault(methodinfo *m);
+java_bytearray *method_get_annotations(methodinfo *m);
+java_bytearray *method_get_parameterannotations(methodinfo *m);
+java_bytearray *method_get_annotationdefault(methodinfo *m);
 #endif
 
 #if !defined(NDEBUG)