Needed for VMSystemProperties initialisation.
Signed-off-by: Vegard Nossum <[email protected]>
---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jatovm-devel