Signed-off-by: Tomek Grabiec <tgrab...@gmail.com> --- include/vm/java_lang.h | 1 + include/vm/object.h | 4 ---- vm/class.c | 4 +++- vm/jato.c | 5 ++++- 4 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/include/vm/java_lang.h b/include/vm/java_lang.h index e3e2a25..7a10325 100644 --- a/include/vm/java_lang.h +++ b/include/vm/java_lang.h @@ -6,6 +6,7 @@ extern struct vm_class *vm_java_lang_Class; extern struct vm_class *vm_java_lang_String; extern struct vm_class *vm_java_lang_Throwable; +extern struct vm_field *vm_java_lang_Class_vmdata; extern struct vm_field *vm_java_lang_String_offset; extern struct vm_field *vm_java_lang_String_count; extern struct vm_field *vm_java_lang_String_value; diff --git a/include/vm/object.h b/include/vm/object.h index 64472b2..dd0905d 100644 --- a/include/vm/object.h +++ b/include/vm/object.h @@ -16,10 +16,6 @@ struct vm_object { * this points to the (artificial) class named "[I". */ struct vm_class *class; - /* For instances of java.lang.Class this points to the class - represented by this java.lang.Class instance. */ - struct vm_class *java_lang_Class_class; - pthread_mutex_t mutex; unsigned int array_length; diff --git a/vm/class.c b/vm/class.c index eaacbda..b48e43a 100644 --- a/vm/class.c +++ b/vm/class.c @@ -38,6 +38,7 @@ #include <vm/classloader.h> #include <vm/die.h> #include <vm/field.h> +#include <vm/java_lang.h> #include <vm/method.h> #include <vm/object.h> #include <vm/string.h> @@ -276,7 +277,8 @@ int vm_class_init(struct vm_class *vmc) return -1; } - vmc->object->java_lang_Class_class = vmc; + field_set_object(vmc->object, vm_java_lang_Class_vmdata, + (struct vm_object *)vmc); if (vmc->class) { /* XXX: Make sure there's at most one of these. */ diff --git a/vm/jato.c b/vm/jato.c index c7f31ac..cc94265 100644 --- a/vm/jato.c +++ b/vm/jato.c @@ -121,7 +121,8 @@ native_vmclass_getname(struct vm_object *object) { struct vm_class *class; - class = object->java_lang_Class_class; + class = (struct vm_class*)field_get_object(object, + vm_java_lang_Class_vmdata); assert(class != NULL); return vm_object_alloc_string_from_c(class->name); @@ -176,12 +177,14 @@ struct field_preload_entry { struct vm_field **field; }; +struct vm_field *vm_java_lang_Class_vmdata; struct vm_field *vm_java_lang_String_offset; struct vm_field *vm_java_lang_String_count; struct vm_field *vm_java_lang_String_value; struct vm_field *vm_java_lang_Throwable_detailMessage; static const struct field_preload_entry field_preload_entries[] = { + { &vm_java_lang_Class, "vmdata", "Ljava/lang/Object;", &vm_java_lang_Class_vmdata }, { &vm_java_lang_String, "offset", "I", &vm_java_lang_String_offset }, { &vm_java_lang_String, "count", "I", &vm_java_lang_String_count }, { &vm_java_lang_String, "value", "[C", &vm_java_lang_String_value }, -- 1.6.0.6 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel