Signed-off-by: Tomek Grabiec <[email protected]>
---
vm/jato.c | 34 ++++++++++++++++++++++++++--------
1 files changed, 26 insertions(+), 8 deletions(-)
diff --git a/vm/jato.c b/vm/jato.c
index 27f816a..c7c6e17 100644
--- a/vm/jato.c
+++ b/vm/jato.c
@@ -199,6 +199,17 @@ static const struct preload_entry preload_entries[] = {
{ "java/lang/Throwable", &vm_java_lang_Throwable },
};
+static const struct preload_entry primitive_preload_entries[] = {
+ {"Z", &vm_boolean_class},
+ {"C", &vm_char_class},
+ {"F", &vm_float_class},
+ {"D", &vm_double_class},
+ {"B", &vm_byte_class},
+ {"S", &vm_short_class},
+ {"I", &vm_int_class},
+ {"J", &vm_long_class},
+};
+
struct field_preload_entry {
struct vm_class **class;
const char *name;
@@ -222,6 +233,8 @@ static const struct field_preload_entry
field_preload_entries[] = {
static int preload_vm_classes(void)
{
+ unsigned int array_size;
+
for (unsigned int i = 0; i < ARRAY_SIZE(preload_entries); ++i) {
const struct preload_entry *pe = &preload_entries[i];
@@ -234,6 +247,19 @@ static int preload_vm_classes(void)
*pe->class = class;
}
+ array_size = ARRAY_SIZE(primitive_preload_entries);
+ for (unsigned int i = 0; i < array_size; ++i) {
+ const struct preload_entry *pe = &primitive_preload_entries[i];
+
+ struct vm_class *class = classloader_load_primitive(pe->name);
+ if (!class) {
+ NOT_IMPLEMENTED;
+ return 1;
+ }
+
+ *pe->class = class;
+ }
+
for (unsigned int i = 0; i < ARRAY_SIZE(field_preload_entries); ++i) {
const struct field_preload_entry *pe
= &field_preload_entries[i];
@@ -248,14 +274,6 @@ 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");
return 0;
}
--
1.6.0.6
------------------------------------------------------------------------------
_______________________________________________
Jatovm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jatovm-devel