Needed for VMSystemProperties initialisation. Signed-off-by: Vegard Nossum <vegard.nos...@gmail.com> --- include/vm/java_lang.h | 4 +++ vm/jato.c | 51 ++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 47 insertions(+), 8 deletions(-)
diff --git a/include/vm/java_lang.h b/include/vm/java_lang.h index 218a358..06ed716 100644 --- a/include/vm/java_lang.h +++ b/include/vm/java_lang.h @@ -5,6 +5,8 @@ extern struct vm_class *vm_java_lang_Object; 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_class *vm_java_util_Properties; + extern struct vm_class *vm_boolean_class; extern struct vm_class *vm_char_class; extern struct vm_class *vm_float_class; @@ -20,4 +22,6 @@ extern struct vm_field *vm_java_lang_String_count; extern struct vm_field *vm_java_lang_String_value; extern struct vm_field *vm_java_lang_Throwable_detailMessage; +extern struct vm_method *vm_java_util_Properties_setProperty; + #endif diff --git a/vm/jato.c b/vm/jato.c index ec46b15..fb47173 100644 --- a/vm/jato.c +++ b/vm/jato.c @@ -183,6 +183,8 @@ struct vm_class *vm_java_lang_Object; struct vm_class *vm_java_lang_Class; struct vm_class *vm_java_lang_String; struct vm_class *vm_java_lang_Throwable; +struct vm_class *vm_java_util_Properties; + struct vm_class *vm_boolean_class; struct vm_class *vm_char_class; struct vm_class *vm_float_class; @@ -197,6 +199,7 @@ static const struct preload_entry preload_entries[] = { { "java/lang/Class", &vm_java_lang_Class }, { "java/lang/String", &vm_java_lang_String }, { "java/lang/Throwable", &vm_java_lang_Throwable }, + { "java/util/Properties", &vm_java_util_Properties }, }; struct field_preload_entry { @@ -220,6 +223,24 @@ static const struct field_preload_entry field_preload_entries[] = { { &vm_java_lang_Throwable, "detailMessage", "Ljava/lang/String;", &vm_java_lang_Throwable_detailMessage }, }; +struct method_preload_entry { + struct vm_class **class; + const char *name; + const char *type; + struct vm_method **method; +}; + +struct vm_method *vm_java_util_Properties_setProperty; + +static const struct method_preload_entry method_preload_entries[] = { + { + &vm_java_util_Properties, + "setProperty", + "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;", + &vm_java_util_Properties_setProperty, + }, +}; + static int preload_vm_classes(void) { for (unsigned int i = 0; i < ARRAY_SIZE(preload_entries); ++i) { @@ -234,6 +255,15 @@ static int preload_vm_classes(void) *pe->class = class; } + vm_boolean_class = classloader_load_primitive("Z"); + vm_char_class = classloader_load_primitive("C"); + vm_float_class = classloader_load_primitive("F"); + vm_double_class = classloader_load_primitive("D"); + vm_byte_class = classloader_load_primitive("B"); + vm_short_class = classloader_load_primitive("S"); + vm_int_class = classloader_load_primitive("I"); + vm_long_class = classloader_load_primitive("J"); + for (unsigned int i = 0; i < ARRAY_SIZE(field_preload_entries); ++i) { const struct field_preload_entry *pe = &field_preload_entries[i]; @@ -248,14 +278,19 @@ static int preload_vm_classes(void) *pe->field = field; } - vm_boolean_class = classloader_load_primitive("Z"); - vm_char_class = classloader_load_primitive("C"); - vm_float_class = classloader_load_primitive("F"); - vm_double_class = classloader_load_primitive("D"); - vm_byte_class = classloader_load_primitive("B"); - vm_short_class = classloader_load_primitive("S"); - vm_int_class = classloader_load_primitive("I"); - vm_long_class = classloader_load_primitive("J"); + for (unsigned int i = 0; i < ARRAY_SIZE(method_preload_entries); ++i) { + const struct method_preload_entry *me + = &method_preload_entries[i]; + + struct vm_method *method = vm_class_get_method(*me->class, + me->name, me->type); + if (!method) { + NOT_IMPLEMENTED; + return 1; + } + + *me->method = method; + } return 0; } -- 1.6.0.4 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel