objectformat: one word after mtable in object layout
[mate.git] / ffi / native.c
index 57a688e3e60c0dc28e5197298e1302b09ffa86a0..45964b77f701a067273b3cb945e8b4d9d402e885 100644 (file)
@@ -48,26 +48,28 @@ void java_io_PrintStream__printf___I_V(int a)
 
 struct integer {
        unsigned int method_table_ptr;
+       unsigned int gc_data;
        int value;
 };
 
 struct string {
        unsigned int method_table_ptr;
+       unsigned int gc_data;
        struct chararray *value;
 };
 
 struct chararray {
        unsigned int length;
-       char *str;
+       char str;
 };
 
-void java_io_PrintStream__printf_0___Ljava_lang_String__V
+void jmate_io_PrintStream__printf_0___Ljava_lang_String__V
        (struct string *fmt)
 {
        printf("%s", &fmt->value->str);
 }
 
-void java_io_PrintStream__printf_1___Ljava_lang_String_Ljava_lang_Object__V
+void jmate_io_PrintStream__printf_1___Ljava_lang_String_Ljava_lang_Object__V
        (struct integer *a1, struct string *fmt)
 {
 #if 0
@@ -80,26 +82,26 @@ void java_io_PrintStream__printf_1___Ljava_lang_String_Ljava_lang_Object__V
        printf(&fmt->value->str, a1->value);
 }
 
-void java_io_PrintStream__printf_2___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object__V
+void jmate_io_PrintStream__printf_2___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object__V
        (struct integer *a2, struct integer *a1, struct string *fmt)
 {
        printf(&fmt->value->str, a1->value, a2->value);
 }
 
 void
-java_io_PrintStream__printf_3___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V
+jmate_io_PrintStream__printf_3___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V
        (struct integer *a3, struct integer *a2, struct integer *a1, struct string *fmt)
 {
        printf(&fmt->value->str, a1->value, a2->value, a3->value);
 }
 
-void java_io_PrintStream__printf_4___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V
+void jmate_io_PrintStream__printf_4___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V
        (struct integer *a4, struct integer *a3, struct integer *a2, struct integer *a1, struct string *fmt)
 {
        printf(&fmt->value->str, a1->value, a2->value, a3->value, a4->value);
 }
 
-void java_io_PrintStream__printf_5___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V
+void jmate_io_PrintStream__printf_5___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object_Ljava_lang_Object__V
        (struct integer *a5, struct integer *a4, struct integer *a3, struct integer *a2, struct integer *a1, struct string *fmt)
 {
        printf(&fmt->value->str, a1->value, a2->value, a3->value, a4->value, a5->value);
@@ -118,8 +120,7 @@ void java_lang_VMSystem__arraycopy___Ljava_lang_Object_ILjava_lang_Object_II_V(
                struct chararray *dest, int dest_start, int len)
 #endif
 {
-       /* TODO(bernhard): clean please... */
-       memcpy(((char *) dest) + 4, ((char *) src) + 4 + src_start, len);
+       memcpy(&dest->str, &src->str + src_start, len);
        dest->length = len;
 #if 0
        hexdump(src, len + 4);