aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPekka Enberg <penberg@kernel.org>2013-06-06 20:01:44 +0300
committerPekka Enberg <penberg@kernel.org>2013-06-06 20:31:33 +0300
commit5069048181455674300d48936f1ea5edff05f1e7 (patch)
tree5121aac6dce7e090e43b0ca9b1af36dbccf90544
parentacbb1bb80e1df2ad99e031b9966196526f7c37d7 (diff)
downloadjato-5069048181455674300d48936f1ea5edff05f1e7.tar.gz
vm: Fix field preload array initializers
Spotted by GCC: vm/preload.c:80:2: warning: missing initializer [-Wmissing-field-initializers] vm/preload.c:80:2: warning: (near initialization for ‘primitive_preload_entries[0].optional’) [-Wmissing-field-initializers] Signed-off-by: Pekka Enberg <penberg@kernel.org>
-rw-r--r--include/vm/preload-fields.h53
-rw-r--r--vm/preload.c181
2 files changed, 100 insertions, 134 deletions
diff --git a/include/vm/preload-fields.h b/include/vm/preload-fields.h
new file mode 100644
index 00000000..981925cf
--- /dev/null
+++ b/include/vm/preload-fields.h
@@ -0,0 +1,53 @@
+PRELOAD_FIELD(vm_java_lang_Class, vmdata, "Ljava/lang/Object;", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_String, offset, "I", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_String, count, "I", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_String, value, "[C", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_Throwable, detailMessage, "Ljava/lang/String;", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_VMThrowable, vmdata, "Ljava/lang/Object;", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_Thread, daemon, "Z", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_Thread, group, "Ljava/lang/ThreadGroup;", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_Thread, name, "Ljava/lang/String;", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_Thread, priority, "I", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_Thread, contextClassLoader, "Ljava/lang/ClassLoader;", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_Thread, contextClassLoaderIsSystemClassLoader, "Z", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_Thread, vmThread, "Ljava/lang/VMThread;", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_VMThread, thread, "Ljava/lang/Thread;", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_VMThread, vmdata, "Ljava/lang/Object;", PRELOAD_MANDATORY)
+
+PRELOAD_FIELD(vm_java_lang_reflect_Constructor, clazz, "Ljava/lang/Class;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_Constructor, slot, "I", PRELOAD_OPTIONAL)
+/* Classpath 0.98 */
+PRELOAD_FIELD(vm_java_lang_reflect_Constructor, cons, "Ljava/lang/reflect/VMConstructor;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_VMConstructor, clazz, "Ljava/lang/Class;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_VMConstructor, slot, "I", PRELOAD_OPTIONAL)
+
+PRELOAD_FIELD(vm_java_lang_reflect_Field, declaringClass, "Ljava/lang/Class;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_Field, slot, "I", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_Field, name, "Ljava/lang/String;", PRELOAD_OPTIONAL)
+/* Classpath 0.98 */
+PRELOAD_FIELD(vm_java_lang_reflect_Field, f, "Ljava/lang/reflect/VMField;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_VMField, clazz, "Ljava/lang/Class;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_VMField, slot, "I", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_VMField, name, "Ljava/lang/String;", PRELOAD_OPTIONAL)
+
+PRELOAD_FIELD(vm_java_lang_reflect_Method, declaringClass, "Ljava/lang/Class;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_Method, name, "Ljava/lang/String;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_Method, slot, "I", PRELOAD_OPTIONAL)
+/* Classpath 0.98 */
+PRELOAD_FIELD(vm_java_lang_reflect_Method, m, "Ljava/lang/reflect/VMMethod;", PRELOAD_OPTIONAL)
+
+PRELOAD_FIELD(vm_java_lang_reflect_VMMethod, clazz, "Ljava/lang/Class;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_VMMethod, m, "Ljava/lang/reflect/Method;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_VMMethod, name, "Ljava/lang/String;", PRELOAD_OPTIONAL)
+PRELOAD_FIELD(vm_java_lang_reflect_VMMethod, slot, "I", PRELOAD_OPTIONAL)
+
+PRELOAD_FIELD(vm_java_lang_ref_Reference, referent, "Ljava/lang/Object;", PRELOAD_MANDATORY)
+PRELOAD_FIELD(vm_java_lang_ref_Reference, lock, "Ljava/lang/Object;", PRELOAD_MANDATORY)
+
+PRELOAD_FIELD(vm_java_nio_Buffer, address, "Lgnu/classpath/Pointer;", PRELOAD_MANDATORY)
+
+#ifdef CONFIG_32_BIT
+PRELOAD_FIELD(vm_gnu_classpath_PointerNN, data, "I", PRELOAD_MANDATORY)
+#else
+PRELOAD_FIELD(vm_gnu_classpath_PointerNN, data, "J", PRELOAD_MANDATORY)
+#endif
diff --git a/vm/preload.c b/vm/preload.c
index beffdd51..837fd047 100644
--- a/vm/preload.c
+++ b/vm/preload.c
@@ -41,9 +41,9 @@ enum {
};
struct preload_entry {
- const char *name;
- struct vm_class **class;
- int optional;
+ const char *name;
+ struct vm_class **class;
+ int optional;
};
#define PRELOAD_CLASS(class_name, var_name, opt) \
@@ -77,150 +77,63 @@ static const struct preload_entry preload_entries[] = {
};
static const struct preload_entry primitive_preload_entries[] = {
- {"boolean", &vm_boolean_class},
- {"char", &vm_char_class},
- {"float", &vm_float_class},
- {"double", &vm_double_class},
- {"byte", &vm_byte_class},
- {"short", &vm_short_class},
- {"int", &vm_int_class},
- {"long", &vm_long_class},
- {"void", &vm_void_class},
+ {"boolean", &vm_boolean_class, PRELOAD_MANDATORY},
+ {"char", &vm_char_class, PRELOAD_MANDATORY},
+ {"float", &vm_float_class, PRELOAD_MANDATORY},
+ {"double", &vm_double_class, PRELOAD_MANDATORY},
+ {"byte", &vm_byte_class, PRELOAD_MANDATORY},
+ {"short", &vm_short_class, PRELOAD_MANDATORY},
+ {"int", &vm_int_class, PRELOAD_MANDATORY},
+ {"long", &vm_long_class, PRELOAD_MANDATORY},
+ {"void", &vm_void_class, PRELOAD_MANDATORY},
};
static const struct preload_entry primitive_array_preload_entries[] = {
- {"[Z", &vm_array_of_boolean},
- {"[C", &vm_array_of_char},
- {"[F", &vm_array_of_float},
- {"[D", &vm_array_of_double},
- {"[B", &vm_array_of_byte},
- {"[S", &vm_array_of_short},
- {"[I", &vm_array_of_int},
- {"[J", &vm_array_of_long},
+ {"[Z", &vm_array_of_boolean, PRELOAD_MANDATORY},
+ {"[C", &vm_array_of_char, PRELOAD_MANDATORY},
+ {"[F", &vm_array_of_float, PRELOAD_MANDATORY},
+ {"[D", &vm_array_of_double, PRELOAD_MANDATORY},
+ {"[B", &vm_array_of_byte, PRELOAD_MANDATORY},
+ {"[S", &vm_array_of_short, PRELOAD_MANDATORY},
+ {"[I", &vm_array_of_int, PRELOAD_MANDATORY},
+ {"[J", &vm_array_of_long, PRELOAD_MANDATORY},
};
struct field_preload_entry {
- struct vm_class **class;
- const char *name;
- const char *type;
- struct vm_field **field;
- int optional;
+ struct vm_class **class;
+ const char *name;
+ const char *type;
+ struct vm_field **field;
+ int optional;
};
-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;
-struct vm_field *vm_java_lang_VMThrowable_vmdata;
-struct vm_field *vm_java_lang_Thread_daemon;
-struct vm_field *vm_java_lang_Thread_group;
-struct vm_field *vm_java_lang_Thread_name;
-struct vm_field *vm_java_lang_Thread_priority;
-struct vm_field *vm_java_lang_Thread_contextClassLoader;
-struct vm_field *vm_java_lang_Thread_contextClassLoaderIsSystemClassLoader;
-struct vm_field *vm_java_lang_Thread_vmThread;
-struct vm_field *vm_java_lang_VMThread_thread;
-struct vm_field *vm_java_lang_VMThread_vmdata;
-struct vm_field *vm_java_lang_reflect_Constructor_clazz;
-struct vm_field *vm_java_lang_reflect_Constructor_cons;
-struct vm_field *vm_java_lang_reflect_Constructor_slot;
-struct vm_field *vm_java_lang_reflect_Field_declaringClass;
-struct vm_field *vm_java_lang_reflect_Field_f;
-struct vm_field *vm_java_lang_reflect_Field_name;
-struct vm_field *vm_java_lang_reflect_Field_slot;
-struct vm_field *vm_java_lang_reflect_Method_declaringClass;
-struct vm_field *vm_java_lang_reflect_Method_m;
-struct vm_field *vm_java_lang_reflect_Method_name;
-struct vm_field *vm_java_lang_reflect_Method_slot;
-struct vm_field *vm_java_lang_reflect_VMConstructor_clazz;
-struct vm_field *vm_java_lang_reflect_VMConstructor_slot;
-struct vm_field *vm_java_lang_reflect_VMField_clazz;
-struct vm_field *vm_java_lang_reflect_VMField_name;
-struct vm_field *vm_java_lang_reflect_VMField_slot;
-struct vm_field *vm_java_lang_reflect_VMMethod_clazz;
-struct vm_field *vm_java_lang_reflect_VMMethod_name;
-struct vm_field *vm_java_lang_reflect_VMMethod_slot;
-struct vm_field *vm_java_lang_reflect_VMMethod_m;
-struct vm_field *vm_java_lang_ref_Reference_referent;
-struct vm_field *vm_java_lang_ref_Reference_lock;
-struct vm_field *vm_java_nio_Buffer_address;
-struct vm_field *vm_gnu_classpath_PointerNN_data;
+#define PRELOAD_FIELD(c, n, t, o) \
+ struct vm_field *c##_##n;
+#include "vm/preload-fields.h"
+#undef PRELOAD_FIELD
+
+#define STRINGIFY(x) #x
+
+#define PRELOAD_FIELD(c, n, t, o) \
+ { \
+ .class = &c, \
+ .name = STRINGIFY(n), \
+ .type = t, \
+ .field = &c##_##n, \
+ .optional = o \
+ },
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 },
- { &vm_java_lang_Throwable, "detailMessage", "Ljava/lang/String;", &vm_java_lang_Throwable_detailMessage },
- { &vm_java_lang_VMThrowable, "vmdata", "Ljava/lang/Object;", &vm_java_lang_VMThrowable_vmdata },
- { &vm_java_lang_Thread, "daemon", "Z", &vm_java_lang_Thread_daemon },
- { &vm_java_lang_Thread, "group", "Ljava/lang/ThreadGroup;", &vm_java_lang_Thread_group },
- { &vm_java_lang_Thread, "name", "Ljava/lang/String;", &vm_java_lang_Thread_name },
- { &vm_java_lang_Thread, "priority", "I", &vm_java_lang_Thread_priority },
- { &vm_java_lang_Thread, "contextClassLoader", "Ljava/lang/ClassLoader;", &vm_java_lang_Thread_contextClassLoader },
- { &vm_java_lang_Thread, "contextClassLoaderIsSystemClassLoader", "Z", &vm_java_lang_Thread_contextClassLoaderIsSystemClassLoader },
- { &vm_java_lang_Thread, "vmThread", "Ljava/lang/VMThread;", &vm_java_lang_Thread_vmThread },
- { &vm_java_lang_VMThread, "thread", "Ljava/lang/Thread;", &vm_java_lang_VMThread_thread },
- { &vm_java_lang_VMThread, "vmdata", "Ljava/lang/Object;", &vm_java_lang_VMThread_vmdata },
-
- /*
- * java.lang.reflect.Constructor
- */
- { &vm_java_lang_reflect_Constructor, "clazz", "Ljava/lang/Class;", &vm_java_lang_reflect_Constructor_clazz, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_Constructor, "slot", "I", &vm_java_lang_reflect_Constructor_slot, PRELOAD_OPTIONAL },
- /* Classpath 0.98 */
- { &vm_java_lang_reflect_Constructor, "cons", "Ljava/lang/reflect/VMConstructor;", &vm_java_lang_reflect_Constructor_cons, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_VMConstructor, "clazz", "Ljava/lang/Class;", &vm_java_lang_reflect_VMConstructor_clazz, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_VMConstructor, "slot", "I", &vm_java_lang_reflect_VMConstructor_slot, PRELOAD_OPTIONAL },
-
- /*
- * java.lang.reflect.Field
- */
- { &vm_java_lang_reflect_Field, "declaringClass", "Ljava/lang/Class;", &vm_java_lang_reflect_Field_declaringClass, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_Field, "slot", "I", &vm_java_lang_reflect_Field_slot, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_Field, "name", "Ljava/lang/String;", &vm_java_lang_reflect_Field_name, PRELOAD_OPTIONAL },
- /* Classpath 0.98 */
- { &vm_java_lang_reflect_Field, "f", "Ljava/lang/reflect/VMField;", &vm_java_lang_reflect_Field_f, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_VMField, "clazz", "Ljava/lang/Class;", &vm_java_lang_reflect_VMField_clazz, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_VMField, "slot", "I", &vm_java_lang_reflect_VMField_slot, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_VMField, "name", "Ljava/lang/String;", &vm_java_lang_reflect_VMField_name, PRELOAD_OPTIONAL },
-
- /*
- * java.lang.reflect.Method
- */
- { &vm_java_lang_reflect_Method, "declaringClass", "Ljava/lang/Class;", &vm_java_lang_reflect_Method_declaringClass, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_Method, "name", "Ljava/lang/String;", &vm_java_lang_reflect_Method_name, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_Method, "slot", "I", &vm_java_lang_reflect_Method_slot, PRELOAD_OPTIONAL },
- /* Classpath 0.98 */
- { &vm_java_lang_reflect_Method, "m", "Ljava/lang/reflect/VMMethod;", &vm_java_lang_reflect_Method_m, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_VMMethod, "clazz", "Ljava/lang/Class;", &vm_java_lang_reflect_VMMethod_clazz, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_VMMethod, "m", "Ljava/lang/reflect/Method;", &vm_java_lang_reflect_VMMethod_m, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_VMMethod, "name", "Ljava/lang/String;", &vm_java_lang_reflect_VMMethod_name, PRELOAD_OPTIONAL },
- { &vm_java_lang_reflect_VMMethod, "slot", "I", &vm_java_lang_reflect_VMMethod_slot, PRELOAD_OPTIONAL },
- { &vm_java_lang_ref_Reference, "referent", "Ljava/lang/Object;", &vm_java_lang_ref_Reference_referent},
- { &vm_java_lang_ref_Reference, "lock", "Ljava/lang/Object;", &vm_java_lang_ref_Reference_lock},
-
- /*
- * java/nio/Buffer
- */
- { &vm_java_nio_Buffer, "address", "Lgnu/classpath/Pointer;", &vm_java_nio_Buffer_address },
-
- /*
- * gnu/classpath/Pointer{32,64}
- */
-#ifdef CONFIG_32_BIT
- { &vm_gnu_classpath_PointerNN, "data", "I", &vm_gnu_classpath_PointerNN_data },
-#else
- { &vm_gnu_classpath_PointerNN, "data", "J", &vm_gnu_classpath_PointerNN_data },
-#endif
+#include "vm/preload-fields.h"
};
+#undef PRELOAD_FIELD
+
struct method_preload_entry {
- struct vm_class **class;
- const char *name;
- const char *type;
- struct vm_method **method;
+ struct vm_class **class;
+ const char *name;
+ const char *type;
+ struct vm_method **method;
};
#define PRELOAD_METHOD(class, method_name, method_type, var_name) \