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 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.
 
 
 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
 
 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
 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
 
 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
 
 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],
 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.
 
    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;
 }
 
        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();
 
 {
        abort();
 
@@ -594,7 +601,7 @@ classinfo * resolve_classref_or_classinfo_eager(classref_or_classinfo cls,
 
 /* stacktrace *****************************************************************/
 
 
 /* stacktrace *****************************************************************/
 
-java_objectarray *stacktrace_getClassContext()
+java_handle_objectarray_t *stacktrace_getClassContext()
 {
        return NULL;
 }
 {
        return NULL;
 }
index 2e597df29033a7e7afbf8cdff2b2b44c3887415f..2dccb9855141bab4c3284ff728c9ab0b3da3ebf7 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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 '[':
                fprintf(file, "double");
                break;
        case '[':
-               addoutputsize ( sizeof(java_arrayheader*) ); 
+               addoutputsize ( sizeof(java_array_t*) ); 
                switch (utf_nextu2(&utf_ptr)) {
                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;
                            
                        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:
                        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.
 
    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 ***********************************************************/
 
 
 /* export variables ***********************************************************/
 
-#warning object or handle???
 extern java_object_t *_exceptionptr;
 extern chain *nativemethod_chain;
 extern chain *nativeclass_chain;
 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.
 
    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 "mm/gc-common.h"
 #include "mm/memory.h"
+
 #include "native/jni.h"
 #include "native/llni.h"
 #include "native/jni.h"
 #include "native/llni.h"
+#include "native/localref.h"
 #include "native/native.h"
 
 #if defined(ENABLE_JAVASE)
 #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_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;
 {
        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)) ||
        /* 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;
        {
                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)
 {
 
 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());
        
 
        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++)
 
        /* 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);
 
        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) 
 {
        
 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());
        
 
        STATISTICS(jniinvokation());
        
@@ -2704,14 +2708,17 @@ u2 *javastring_tou2(jstring so)
        if (!a)
                return NULL;
 
        if (!a)
                return NULL;
 
+       LLNI_field_get_val(s, count, count);
+       LLNI_field_get_val(s, offset, offset);
+
        /* allocate memory */
 
        /* allocate memory */
 
-       stringbuffer = MNEW(u2, LLNI_field_direct(s, count) + 1);
+       stringbuffer = MNEW(u2, count + 1);
 
        /* copy text */
 
 
        /* 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 */
 
        
        /* terminate string */
 
@@ -2796,14 +2803,14 @@ jstring _Jv_JNI_NewStringUTF(JNIEnv *env, const char *bytes)
 
 jsize _Jv_JNI_GetStringUTFLength(JNIEnv *env, jstring string)
 {   
 
 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;
 
        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;
 }
 
        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)
 {
 
 jsize _Jv_JNI_GetArrayLength(JNIEnv *env, jarray array)
 {
-       java_arrayheader *a;
+       java_handle_t *a;
+       jsize          size;
 
        STATISTICS(jniinvokation());
 
 
        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)
 {
 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());
 
 
        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++)
        /* 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);
 }
 
        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)
 {
 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());
 
 
        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;
        }
 
                exceptions_throw_arrayindexoutofboundsexception();
                return NULL;
        }
 
-       o = oa->data[index];
+       LLNI_objectarray_element_get(oa, index, o);
 
        return _Jv_JNI_NewLocalRef(env, (jobject) 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)
 {
 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());
 
 
        STATISTICS(jniinvokation());
 
-       oa = (java_objectarray *) array;
+       oa = (java_handle_objectarray_t *) array;
        o  = (java_handle_t *) val;
 
        o  = (java_handle_t *) val;
 
-       if (index >= oa->header.size) {
+       if (index >= LLNI_array_size(oa)) {
                exceptions_throw_arrayindexoutofboundsexception();
                return;
        }
                exceptions_throw_arrayindexoutofboundsexception();
                return;
        }
@@ -2959,14 +2969,14 @@ void _Jv_JNI_SetObjectArrayElement(JNIEnv *env, jobjectArray array,
        if (!builtin_canstore(oa, o))
                return;
 
        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)    \
 {                                                        \
 }
 
 
 #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());                         \
                                                          \
                                                          \
        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)             \
 {                                                                      \
 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());                                       \
                                                                        \
                                                                        \
        STATISTICS(jniinvokation());                                       \
                                                                        \
-       a = (java_##intern##array *) array;                                \
+       a = (java_handle_##intern##array_t *) array;                       \
                                                                        \
        if (isCopy)                                                        \
                *isCopy = JNI_FALSE;                                           \
                                                                        \
                                                                        \
        if (isCopy)                                                        \
                *isCopy = JNI_FALSE;                                           \
                                                                        \
-       return a->data;                                                    \
+       return LLNI_array_data(a);                                         \
 }
 
 JNI_GET_ARRAY_ELEMENTS(Boolean, jboolean, boolean)
 }
 
 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)
 }
 
 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)
 }
 
 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) \
 {                                                                            \
 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());                                             \
                                                                              \
                                                                              \
        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                                                                     \
                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)
 }
 
 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)
 {
 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());
 
 
        STATISTICS(jniinvokation());
 
@@ -3285,7 +3295,7 @@ void _Jv_JNI_GetStringRegion(JNIEnv* env, jstring str, jsize start, jsize len,
                return;
        }
 
                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)
 {
 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);
 
        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++)
                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';
 }
 
        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)
 {
 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 */
 
 
        /* 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.
 
    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,
 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 */
 
 
 #endif /* _JNI_H */
 
index 09d89b352266f3ed0a83a05b418564ae7b3ad3c4..a9a9d33680b0ff6b26ce816528f5db2c53b9c2f5 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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 "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 ***********************************************************/
 
 
 /* global variables ***********************************************************/
 
@@ -56,6 +67,8 @@ bool localref_table_init(void)
 {
        localref_table *lrt;
 
 {
        localref_table *lrt;
 
+       TRACELOCALREF("table init");
+
        assert(LOCALREFTABLE == NULL);
 
 #if defined(ENABLE_GC_CACAO)
        assert(LOCALREFTABLE == NULL);
 
 #if defined(ENABLE_GC_CACAO)
@@ -113,8 +126,8 @@ void localref_table_remove()
 
        lrt = LOCALREFTABLE;
 
 
        lrt = LOCALREFTABLE;
 
+       assert(lrt != NULL);
        assert(lrt->localframes == 1);
        assert(lrt->localframes == 1);
-       assert(lrt->prev != NULL);
 
        lrt = lrt->prev;
 
 
        lrt = lrt->prev;
 
@@ -135,6 +148,13 @@ bool localref_frame_push(int32_t capacity)
        localref_table *nlrt;
        int32_t         additionalrefs;
 
        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
        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;
 
        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. */
 
        /* 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;
 
        int32_t         localframes;
        int32_t         additionalrefs;
 
+       TRACELOCALREF("frame pop all");
+
        /* get current local reference table from thread */
 
        lrt = LOCALREFTABLE;
 
        /* 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
        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;
 
 
        lrt = LOCALREFTABLE;
 
-       printf("\n--------- Local Reference Tables Dump ---------\n");
+       log_println("--------- Local Reference Tables Dump ---------");
 
        while (lrt != NULL) {
 
        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]);
 
                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.
 
    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 "config.h"
 
 #include "native/jni.h"
+#include "native/llni.h"
 #include "native/native.h"
 
 #include "native/include/java_lang_Class.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;
  */
  * 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();
 
 
        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)
 {
  */
 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;
 
 
        oa = stacktrace_getClassContext();
 
        if (oa == NULL)
                return NULL;
 
-       if (oa->header.size < 2)
+       if (LLNI_array_size(oa) < 2)
                return NULL;
 
                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)
 {
  */
 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;
 
 
        oa = stacktrace_getClassContext();
 
        if (oa == NULL)
                return NULL;
 
-       if (oa->header.size < 2)
+       if (LLNI_array_size(oa) < 2)
                return NULL;
         
                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;
 
        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)
 {
  */
 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;
 
 
        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)
                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;
  */
  * 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!");
 
 {
        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
  */
  * 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!");
 
 {
        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.
 
    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;
  */
  * 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);
 }
 {
        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;
  */
  * 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);
 }
 {
        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;
  */
  * 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);
 }
 {
        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;
  */
  * 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);
 }
 {
        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;
  */
  * 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);
 }
 {
        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;
  */
  * 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);
 }
 {
        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.
 
    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;
  */
  * 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);
 }
 {
        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.
 
    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)
 {
  */
 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.
 
    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;
  */
  * 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;
 {
        stacktracecontainer         *stc;
        stacktracebuffer            *stb;
@@ -125,7 +125,7 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMThrowable_getStackTrace(JNI
        bool                         leftexceptionclass;
 
        methodinfo                  *m;
        bool                         leftexceptionclass;
 
        methodinfo                  *m;
-       java_objectarray            *oa;
+       java_handle_objectarray_t   *oa;
        s4                           oalength;
        java_lang_StackTraceElement *o;
        java_lang_String            *filename;
        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);
 
                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;
        }
 
        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;
  */
  * 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!");
 
 
        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;
  */
  * 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!");
 
 
        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;
  */
  * 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!");
 
 
        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.
 
    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"
 
 #if defined(ENABLE_ANNOTATIONS)
 #include "vm/vm.h"
+#include "vm/exceptions.h"
 #endif
 
 #include "vm/types.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;
  */
  * 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 */
 
 {
        /* 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)
 {
  */
 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;
        }
 
        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;
  */
  * 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;
        }
 
 
        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
 
 }
 #endif
 
index b35f70a14c8f6d2576f8bf374c05853d3353b220..a58447c3993e5ae280d67c35c1c59a70be15f5d1 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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)
 {
  */
 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;
        }
 
 
        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
 
 }
 #endif
 
index 826fbdc19ca3ded27f5d893fc1839253fe8bd5dc..70021936326c5a27487875c1060ffc2d0846114d 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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;
  */
  * 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;
 {
        classinfo  *c;
        methodinfo *m;
@@ -163,7 +163,7 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getParameterTy
  * Method:    getExceptionTypes
  * Signature: ()[Ljava/lang/Class;
  */
  * 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;
 {
        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;
  */
  * 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 */
 
 {
        /* 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;
 {
        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();
 
        if (this == NULL) {
                exceptions_throw_nullpointerexception();
@@ -247,7 +248,8 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Method_getDefa
                return NULL;
        }
 
                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) {
 
        /* 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)
 {
  */
 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;
        }
 
 
        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;
  */
  * 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;
        }
 
 
        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
 
 }
 #endif
 
index 47dfe6cdfbccfa11a4ba6ac52d90cbbb18cce2e9..615c7109a2b74936d75c3a2366a7eda87a9d15a3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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;
  */
  * 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();
 }
 {
        return stacktrace_getStack();
 }
index d263a63c430008cdb613101aa3f113187195dba4..923ff43f1c26762f1bd36d822f94d7a3b3ab99c3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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 "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
 #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;
 {
        classinfo        *c;
        java_lang_String *s;
-       java_chararray   *ca;
+       java_chararray_t *ca;
        u4                i;
 
        c = (classinfo *) klass;
        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);
 
 
        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;
        }
 
        return s;
@@ -290,7 +291,7 @@ java_lang_Class *_Jv_java_lang_Class_getSuperclass(java_lang_Class *klass)
 
        super = class_get_superclass(c);
 
 
        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;
  */
  * 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;
 
 
        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;
 }
 
        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;
  */
  * 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;
 
        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;
 }
 
        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;
  */
  * 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;
        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 */
 
 
                        /* 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;
  */
  * 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;
        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 */
 
 
                        /* 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;
  */
  * 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 */
 {
        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;
        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 */
 
 
                        /* 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;
  */
  * 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;
        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();
 
        if (c == NULL) {
                exceptions_throw_nullpointerexception();
@@ -758,7 +691,7 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* kl
                return NULL;
        }
 
                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) {
 
        /* 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);
 }
                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);
 #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_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
 
 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)
 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);
 #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;
  */
  * 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;
 {
        utf               *utfname;
        classinfo         *c;
@@ -95,7 +95,7 @@ java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl
 
        /* check the indexes passed */
 
 
        /* 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;
        }
                exceptions_throw_arrayindexoutofboundsexception();
                return NULL;
        }
index 0127dd3d4ee9db9889d672c1647e267639e9a5a2..33364bbe11d91fe2539130a37310fd61e7eab532 100644 (file)
@@ -50,7 +50,7 @@
 /* function prototypes ********************************************************/
 
 #if defined(ENABLE_JAVASE)
 /* 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 */
 #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;
  */
  * 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;
 {
        classinfo  *c;
        methodinfo *m;
index 516591bc85be6ed30157e81f2190528a2a269261..85fa518fbe10c65e08f36675d664c60df5123860 100644 (file)
@@ -45,7 +45,7 @@
 
 /* function prototypes ********************************************************/
 
 
 /* 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 */
 
 
 #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;
  */
  * 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;
 {
        classloader     *cl;
        utf             *utfname;
@@ -553,7 +553,7 @@ JNIEXPORT java_lang_Class* JNICALL Java_sun_misc_Unsafe_defineClass__Ljava_lang_
 
        /* check the indexes passed */
 
 
        /* 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;
        }
                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.
 
    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
        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.
 
    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
 
        u2                    filterverbosecallctr[2]; /* counters for verbose call filter */
 #endif
 
+#if !defined(NDEBUG)
+       s4                    tracejavacallindent;
+       u4                    tracejavacallcount;
+#endif
+
        listnode_t            linkage;      /* threads-list                       */
 };
 
        listnode_t            linkage;      /* threads-list                       */
 };
 
@@ -181,6 +186,13 @@ struct threadobject {
 #      define FILTERVERBOSECALLCTR (THREADOBJECT->filterverbosecallctr)
 #endif
 
 #      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);
 /* 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
 
 #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 */
 
 
 #endif /* _THREADS_H */
 
 
index 70acfc38e9d2b567b41f3f0f916d4ca7913d13ca..984f8d002d029966bc6712e93cc38747de8d1b5e 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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 "mm/memory.h"
 
+#include "native/llni.h"
+
 #include "vm/access.h"
 #include "vm/builtin.h"
 #include "vm/exceptions.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)
 {
 
 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 */
 
 
        /* 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;
 
        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];
 
 
        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)
 {
 
 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 */
 
 
        /* 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;
 
        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];
 
 
        callerclass = (classinfo *) oa->data[calldepth];
 
index cb958cc05930393e402482f0d0d8b84fccad46dd..2286c40f7499f94b5adc8a477c3d35f6713d114a 100644 (file)
@@ -28,7 +28,7 @@
    calls instead of machine instructions, using the C calling
    convention.
 
    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;
 {
        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 */
 
 
 /* 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;
 {
        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 */
 
 /* 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;
 {
        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
 #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
 
        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);
 
        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;
        
 {
        classinfo *arrayclass;
        
@@ -988,7 +988,7 @@ java_objectarray *builtin_anewarray(s4 size, classinfo *componentclass)
        if (!arrayclass)
                return NULL;
 
        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);
 }
                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);
 }
 
                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);
 }
 
                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);
 }
 
                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);
 }
 
                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);
 }
 
                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);
 }
 
                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);
 }
                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];
 
        /* create this dimension */
 
        size = (s4) dims[0];
-       a = builtin_newarray(size, arrayclass);
+       a = builtin_newarray(size, arrayclass);
 
        if (!a)
                return NULL;
 
        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++) {
        /* 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 */
 
 #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;
                
                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;
        }
 
        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;
 {
        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;
 {
        arraydescriptor *sdesc;
        arraydescriptor *ddesc;
@@ -2647,8 +2647,8 @@ bool builtin_arraycopy(java_arrayheader *src, s4 srcStart,
                return false;
        }
 
                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();
 
        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) ||
        /* 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;
        }
                exceptions_throw_arrayindexoutofboundsexception();
                return false;
        }
@@ -2677,8 +2677,8 @@ bool builtin_arraycopy(java_arrayheader *src, s4 srcStart,
        else {
                /* We copy references of different type */
 
        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++) {
                 
                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)
 {
 
 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 */
 
 
        /* 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) {
        /* 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);
 
         
                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.
 
    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_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
 
 #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
 
 #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
 #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
 #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
 #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
 #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
 #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
 #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
 #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
 
 #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
 
 #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)
 #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
 
 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);
 #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.
 
    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 */
 
 
        /* 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 */
 
 
        /* java/lang/Throwable */
 
@@ -1947,7 +1947,7 @@ void exceptions_print_exception(java_handle_t *xptr)
        }
 
 #if defined(ENABLE_JAVASE)
        }
 
 #if defined(ENABLE_JAVASE)
-       LLNI_field_set_ref(t, cause, cause);
+       LLNI_field_get_ref(t, cause, cause);
 #endif
 
        /* print the root exception */
 #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.
 
    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; 
 /* 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   */
 
 
 #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
 /* 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.
 */
 
        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_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 */
 
 /*  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];
        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];
        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];
        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];
        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];
        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];
        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];
        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];
        double data[1];
-} java_doublearray;
+} java_doublearray_t;
 
 /*  objectarray and arrayarray need identical memory layout (access methods
     use the same machine code */
 
 
 /*  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 */
 /* 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.
 ##
 ## 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
 
 
 ## Process this file with automake to produce Makefile.in
 
@@ -166,7 +166,9 @@ libjit_la_SOURCES = \
        show.h \
        $(STACK_SOURCES) \
        stacktrace.c \
        show.h \
        $(STACK_SOURCES) \
        stacktrace.c \
-       stacktrace.h
+       stacktrace.h \
+       trace.c \
+       trace.h
 
 libjit_la_SOURCES += \
        cfg.c \
 
 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.
 
    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 "config.h"
 
 #include <assert.h>
+#include <stdint.h>
 
 #include "vm/types.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) {
        /* if this is a copy of another variable, just decrement the copy counter */
 
        if (flags & INMEMORY) {
+               int32_t memindex;
+
                if (flags & INOUT)
                        return;
 
                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;
                }
        }
                        return;
                }
        }
@@ -1610,14 +1613,15 @@ static void simplereg_allocate_temporaries(jitdata *jd)
                                                v = VAROP(iptr->dst);
 
                                                if (v->flags & INMEMORY) {
                                                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;
                                                        }
                                                                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 */
                                                }
                                                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.
 
    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 */
                        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;
 
                        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);
                        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_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);
                        }
                                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);
                        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);
                        }
                        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);
                                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);
                        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_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);
                        }
                                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);
                        /* 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;
 
                        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);
                        /* 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;
 
                        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);
                        /* 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;
 
                        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);
                        /* 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;
 
                        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);
                        /* 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;
 
                        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);
                        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);
                        }
                        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);
                                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);
                        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);
                        }
                        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);
                                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);
                        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);
                        }
                        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);
                                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);
                        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  ==> ...         */
                        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);
                        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  ==> ...         */
                        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);
                        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  ==> ...         */
                        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);
                        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  ==> ...         */
                        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);
                        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;
 
 
                        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);
                        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);
                        }
                        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);
                                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);
                        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);
                        }
                        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);
                                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);
                        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);
                        }
                        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);
                                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);
                        /* 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  ==> ...            */
                        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);
                        /* 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  ==> ...            */
                        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);
                        /* 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;
 
 
                        break;
 
 
index 044a01bd14f3d619aaf266564d8b7025f19e7bd2..84c3bf3ea9cd981e9f760aed213589814054caa3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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)) {
 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);
                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.
 
    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 */
                        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;
 
                        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 */
                        /* 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;
 
                        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 */
                        /* 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;
 
                        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 */
                        /* 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;
 
                        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 */
                        /* 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;
 
                        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 */
                        /* 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;
 
                        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_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);
 #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;
 #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_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);
 #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;
 #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 */
                        /* 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;
 
                        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 */
                        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  ==> ...         */
                        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 */
                        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  ==> ...         */
                        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 */
                        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  ==> ...         */
                        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 */
                        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  ==> ...         */
                        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);
                        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  ==> ...         */
                        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_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);
 #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;
 
 #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_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);
 #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;
 
 #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 */
                        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                          */
                        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)) {
 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);
        }
                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).   
 
    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 "toolbox/logging.h"
 
 #include "native/jni.h"
+#include "native/localref.h"
 #include "native/native.h"
 
 #include "threads/threads-common.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.
 
    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 */
                        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;
 
                        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);
                        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;
                                                                         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);
                        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;                  
                                                                         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);
                        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;
                                                                         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);
                        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;
                                                                  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);
                        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);
                                                                  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;
                                                                  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);
                        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;
 
                        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);
                        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;
 
                        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);
                        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;
                                                                  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;
                        }
                                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;
 
                                                                   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);
                        /* 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;
 
                                                                   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);
                        /* 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;
 
                                                                   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);
                        /* 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;
 
                                                                  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);
 
                        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,
                                                                  , 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  ==> ...         */
                        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);
                        /* 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  ==> ...         */
                        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);
                        /* 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;
 
                                                                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);
                        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;
 
                                                                  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,
                        /* 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  ==> ...            */
                        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,
                        /* 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  ==> ...            */
                        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,
                        /* 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  ==> ...              */
                        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,
                        /* 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  ==> ...              */
                        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),
                        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, 
                        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  ==> ...              */
                        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, 
                        /* 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;
 
 
                        break;
 
 
index 9460875e44a051617d3129dfc383b8d865b41dd2..b74a2959e0f4a98aa4552975a3623d9a42a552dc 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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)) {
 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);
         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 */
                        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;
 
                        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);
                        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 */
                        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);
                        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 */
                        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);
                        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);
                
                        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);
                        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 */
                        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);
                        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 */
                        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);
                        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 */
                        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);
                        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 */
                        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);
                        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);
        
                        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);
                        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 */
                        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);
                        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 */
                        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);
                        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 */
                        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);
                        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 */
                        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_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 */
                        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);
                        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 */
                        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);
                        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 */
                        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);
                        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 */
                        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)) {
 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);
                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.
 
    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 */
                        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;
 
                        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 */
                        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;
 
                        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_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;                  
 
                        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_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;
 
                        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_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;
 
                        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_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;
 
                        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_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;
 
                        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_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;
 
                        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_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;
 
                        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_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  ==> ...         */
                        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_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  ==> ...         */
                        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_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  ==> ...         */
                        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 */
                        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  ==> ...         */
                        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_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  ==> ...         */
                        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_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;
 
 
                        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_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;
 
 
                        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 */
                        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  ==> ...            */
                        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_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  ==> ...            */
                        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_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  ==> ...            */
                        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_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
 #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;
 
 #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_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;
 
 
                        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)) {
 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;
                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.
 
    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 */
                        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;
 
                        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);
                        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);
                        /* 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);
                        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);
                        /* 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);
                        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);
                        /* 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);
                        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);
                        /* 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);
                        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;
 
                        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);
                        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);
                        /* 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);
                        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);
                        /* 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);
                        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);
                        /* 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);
                        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;
                        /* 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);
                        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;
                        /* 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);
                        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;
                        /* 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);
                        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;
                        /* 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);
                        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);
                        /* 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);
                        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;
                        /* 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);
                        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;
                        /* 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);
                        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;
                        /* 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.
 
    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)) {
 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);
        }
 }
                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.
 
    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);
                        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;
 
                        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);
                        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);
                        /* 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);
                        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);
                        /* 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);
                        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);
                        /* 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);
                        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);
                        /* 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_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;
 
                        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);
                        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);
                        /* 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);
                        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);
                        /* 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);
                        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);
                        /* 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);
                        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;
                        /* 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);
                        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;
                        /* 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);
                        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;
 
                        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);
                        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;
                        /* 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);
                        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;
                        /* 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);
                        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;
                        /* 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);
                        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;
                        /* 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);
                        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;
                        /* 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
        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_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 */
                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.
 
    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 */
                        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;
                        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);
 
                        /* 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);
 
                        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);
 
                        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 ! */
 
 
                        /* 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);
 
                        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;
 
                        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 */
                        
                        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;
 
                        emit_store_dst(jd, iptr, d);
                        break;
 
@@ -1805,8 +1805,8 @@ bool codegen_emit(jitdata *jd)
                                s1 = REG_ITMP3;
                        }
 
                                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;
                        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 */
        
                        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;
 
                        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 */
        
                        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;
 
                        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 */
                        
                        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;
 
                        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);
 
                        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  ==> ...         */
                        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);
 
                        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;
 
 
                        break;
 
@@ -1893,7 +1893,7 @@ bool codegen_emit(jitdata *jd)
                        M_INTMOVE(s2, REG_ITMP2);
                        M_SLL_IMM(1, REG_ITMP2);
 
                        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  ==> ...         */
                        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);
 
                        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  ==> ...         */
                        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);
                        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);
                        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  ==> ...         */
                        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);
 
                        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  ==> ...         */
                        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);
 
                        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  ==> ...         */
                        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);
 
                        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
 
                        /*
                        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.
 
    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)
 *******************************************************************************/
 
 #if !defined(NDEBUG)
+#include "vm/jit/trace.h"
 void emit_verbosecall_enter(jitdata *jd)
 {
 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;
        methodinfo   *m;
        codegendata  *cd;
        methoddesc   *md;
@@ -410,6 +480,7 @@ void emit_verbosecall_enter(jitdata *jd)
        /* mark trace code */
 
        M_NOP;
        /* mark trace code */
 
        M_NOP;
+#endif
 }
 #endif /* !defined(NDEBUG) */
 
 }
 #endif /* !defined(NDEBUG) */
 
@@ -423,6 +494,61 @@ void emit_verbosecall_enter(jitdata *jd)
 #if !defined(NDEBUG)
 void emit_verbosecall_exit(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;
        methodinfo   *m;
        codegendata  *cd;
        registerdata *rd;
@@ -470,6 +596,7 @@ void emit_verbosecall_exit(jitdata *jd)
        /* mark trace code */
 
        M_NOP;
        /* mark trace code */
 
        M_NOP;
+#endif
 }
 #endif /* !defined(NDEBUG) */
 
 }
 #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.
                 */
                /* 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);
        }
         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;
 }
                
        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 ****************************************************************
        
 
 /* codegen_emit ****************************************************************
@@ -145,6 +157,7 @@ bool codegen_emit(jitdata *jd)
        {
        s4 i, p, t, l;
        s4 savedregs_num;
        {
        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 */
 
 #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 */
        /* 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
 
 #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) */
 
 
        /* 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
 
        /* 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);
                        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;
 
                        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);
                        /* 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;
 
                        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);
                        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;                  
 
                        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);
                        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;
 
                        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);
                        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;
 
                        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);
                        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;
 
                        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);
                        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;
 
                        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);
                        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;
 
                        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);
                        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;
 
                        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);
                        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  ==> ...         */
                        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_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  ==> ...         */
                        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_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  ==> ...         */
                        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_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  ==> ...         */
                        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_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  ==> ...         */
                        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_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;
 
 
                        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_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;
 
 
                        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);
                        /* 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  ==> ...            */
                        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);
                        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  ==> ...            */
                        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);
                        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  ==> ...            */
                        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);
                        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  ==> ...            */
                        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);
                        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;
                
 
                        break;
                
 
index 9acf13b8b6a11bac0b70deed87a3630f297ab1f6..6686a772b726c5c74793860e769ef8f9e021a406 100644 (file)
 
 #include <assert.h>
 
 
 #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];
 
 /* 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 { \
  */
 #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)
                *((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); \
                } \
                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)
        
                } \
        } 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(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)
 
 
 #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); \
         } 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 */ 
         } \
     } 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); \
         } 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)
 
         } \
     } 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); \
         } 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)
     
         } \
     } 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); \
         } 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)
     
         } \
     } 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)) {
 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;
                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.
 
    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 */
        CYCLES_STATS_DECLARE_AND_START
 
        /* mark start of dump memory area */
@@ -884,17 +884,17 @@ return_NULL:
 *******************************************************************************/
 
 #if defined(ENABLE_JAVASE)
 *******************************************************************************/
 
 #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 */
        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.
 
    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 {
 *******************************************************************************/
 
 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;
        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)
 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);
 #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.
 
    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 */
                        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;
 
                        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);
                        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;
 
                        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);
                        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;                  
 
                        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);
                        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;
 
                        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);
                        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;
 
                        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);
                        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;
 
                        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);
                        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;
 
                        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);
                        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;
 
                        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);
                        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;
 
                        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);
                        /* 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  ==> ...         */
                        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);
                        /* 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  ==> ...         */
                        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);
                        /* 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  ==> ...         */
                        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);
                        /* 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  ==> ...         */
                        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);
                        /* 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  ==> ...         */
                        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);
                        /* 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  ==> ...         */
                        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);
                        /* 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  ==> ...         */
                        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);
                        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;
 
 
                        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);
                        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  ==> ...            */
                        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);
                        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  ==> ...            */
                        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);
                        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  ==> ...              */
                        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);
                        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  ==> ...              */
                        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_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 {
                        }
                        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;
 
                        }
                        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);
                        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;
 
 
                        break;
 
 
index 68242346a56b4b7b34219d19abdf65381a09ceea..bc2eb4ca79664f0568fa18345c0d92375a967890 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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)) {
 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);
         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.
 
    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 */
 
 # 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)
                                                           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 */
 
                                                           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
 
                                                           SA_NODEFER | SA_SIGINFO);
 #  endif
 
@@ -147,7 +147,7 @@ bool signal_init(void)
                /* XXX use better defines for that (in arch.h) */
                /* SIGILL handler */
 
                /* 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
 
                                                           SA_NODEFER | SA_SIGINFO);
 #  endif
 
@@ -155,7 +155,7 @@ bool signal_init(void)
                /* XXX use better defines for that (in arch.h) */
                /* SIGTRAP handler */
 
                /* 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)
                                                           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 */
 
 #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)
 #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 */
 
 #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
 
                                                   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 *);
 {
        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.
 
    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);
 /* 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);
 
 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.
 
    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)
 {
  
 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++) {
        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                          */
        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);
        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++)
        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 */
 
        
        /* 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 *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;
 
        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   */
 {
        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) {
        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++)
        /* 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 */
 
        
        /* 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   */
 {
        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;
 
        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 = '.';
                ch = utf_nextu2(&utf_ptr);
                if (ch == '/')
                        ch = '.';
-               a->data[i] = ch;
+               LLNI_array_direct(a, i) = ch;
        }
        
        /* set fields of the javastring-object */
        }
        
        /* 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               */
 {
        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();
 
        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++)
        /* 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 */
 
        
        /* 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) 
 {
 
 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;
        
        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     */
 {
     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;
     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)
                        /* 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);
 
 
                        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 */
 
     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); */
                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 {
                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)
 {
 
 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                            */
                                         /* 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 */ 
 
        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++)
 
     /* 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;
 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;
 
        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(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.
 
    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 */
 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);
 
 /* 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.
 
    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)
 {
 
 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) {
 
 #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);
 
                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
        }
 
 #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,
 *******************************************************************************/
 
 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;
 {
        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;
        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++) {
        }
 
        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:
 
                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.
 
    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 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,
 
 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.
 
    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 "mm/memory.h"
 
+#include "native/llni.h"
+
 #include "threads/lock-common.h"
 
 #include "toolbox/logging.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"
 #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,
 /* 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
 /* 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.
 
    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);
 
 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)
 
 #if defined(ENABLE_JAVASE)
-utf       *class_get_signature(classinfo *c);
+utf              *class_get_signature(classinfo *c);
 #endif
 
 /* some debugging functions */
 #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.
 
    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 "mm/memory.h"
 
+#include "vm/builtin.h"
 #include "vm/exceptions.h"
 #include "vm/global.h"
 #include "vm/primitive.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
 
 }
 #endif
 
index dce84cefefa0055cdd02ac2e635eda03bad435d3..7eb3df5a17f4c437d206fbc6f770c401e9e336d0 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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)
 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)
 #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.
 
    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*);
                /* 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;
 
                
                compvftbl = comp->vftbl;
 
@@ -1072,49 +1072,49 @@ static arraydescriptor *link_array(classinfo *c)
                switch (c->name->text[1]) {
                case 'Z':
                        desc->arraytype = ARRAYTYPE_BOOLEAN;
                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->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->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->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->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->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->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->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;
 
                        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.
 
    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 "mm/memory.h"
 
+#include "native/llni.h"
+
 #include "threads/lock-common.h"
 
 #include "vm/builtin.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;
 
 
        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;
 
                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;
        }
 
        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 */
 
 
        /* create class-array */
 
@@ -698,7 +700,7 @@ java_objectarray *method_get_exceptionarray(methodinfo *m)
                if (c == NULL)
                        return NULL;
 
                if (c == NULL)
                        return NULL;
 
-               oa->data[i] = c;
+               LLNI_array_direct(oa, i) = (java_object_t *) c;
        }
 
        return oa;
        }
 
        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) {
        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) {
 
        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) {
 
        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
 
 }
 #endif
 
index af9930d54bc6ce18341379f56e453aa37fc84727..5c505cf663cdd96078b20abf01774bef3b22dcb3 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
    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);
 
 
 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);
 
 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)
 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)
 #endif
 
 #if !defined(NDEBUG)