X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=ffi%2Fnative.c;h=7374405b7fbe172c8384494d9f88615707e8dfab;hb=6e6629e8116619ad3c996b88067bb4df835ddaaf;hp=2972a18a34e70aa1037ca4804a910896df8f27c4;hpb=1675296109f7d45f42b2100cb70a4edb314fe6d6;p=mate.git diff --git a/ffi/native.c b/ffi/native.c index 2972a18..7374405 100644 --- a/ffi/native.c +++ b/ffi/native.c @@ -1,4 +1,6 @@ #include +#include +#include static char ascii(char s) { if(s < 0x20) return '.'; @@ -44,43 +46,82 @@ void java_io_PrintStream__printf___I_V(int a) printf("printstream: 0x%08x\n", a); } -void java_io_PrintStream__println___Ljava_lang_String__V(const char *a) -{ - printf("%s\n", a); -} - struct integer { unsigned int method_table_ptr; int value; }; -void java_io_PrintStream__printf_1___Ljava_lang_String_Ljava_lang_Object__V - (struct integer *a1, const char *fmt) +struct string { + unsigned int method_table_ptr; + struct chararray *value; +}; + +struct chararray { + unsigned int length; + char str; +}; + +void jmate_io_PrintStream__printf_0___Ljava_lang_String__V + (struct string *fmt) { - printf(fmt, a1->value); + printf("%s", &fmt->value->str); } -void java_io_PrintStream__printf_2___Ljava_lang_String_Ljava_lang_Object_Ljava_lang_Object__V - (struct integer *a2, struct integer *a1, const char *fmt) +void jmate_io_PrintStream__printf_1___Ljava_lang_String_Ljava_lang_Object__V + (struct integer *a1, struct string *fmt) { - printf(fmt, a1->value, a2->value); +#if 0 + printf("fmt: 0x%08x\n", (unsigned int) fmt); + printf("fmt->value: 0x%08x\n", (unsigned int) fmt->value); + printf("fmt->val.len: 0x%08x\n", (unsigned int) (*fmt->value).length); + printf("first: %d\n", fmt->value->length); + printf("*fmt: %s\n", &fmt->value->str); +#endif + printf(&fmt->value->str, a1->value); +} + +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 - (struct integer *a3, struct integer *a2, struct integer *a1, const char *fmt) +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 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, a1->value, a2->value, a3->value); + printf(&fmt->value->str, a1->value, a2->value, a3->value, a4->value); } -void java_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, const char *fmt) +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, a1->value, a2->value, a3->value, a4->value); + printf(&fmt->value->str, a1->value, a2->value, a3->value, a4->value, a5->value); +} + +void gnu_classpath_VMSystemProperties__preInit___Ljava_util_Properties__V() { + return; } -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 - (struct integer *a5, struct integer *a4, struct integer *a3, struct integer *a2, struct integer *a1, const char *fmt) +void java_lang_VMSystem__arraycopy___Ljava_lang_Object_ILjava_lang_Object_II_V( + int len, int dest_start, struct chararray *dest, + int src_start, struct chararray *src) +#if 0 + /* original */ + struct chararray *src, int src_start, + struct chararray *dest, int dest_start, int len) +#endif { - printf(fmt, a1->value, a2->value, a3->value, a4->value, a5->value); + memcpy(&dest->str, &src->str + src_start, len); + dest->length = len; +#if 0 + hexdump(src, len + 4); + hexdump(dest, len + 4); +#endif }