Signed-off-by: Vegard Nossum <[email protected]>
---
include/vm/class.h | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 69 insertions(+), 2 deletions(-)
diff --git a/include/vm/class.h b/include/vm/class.h
index e6cb2fe..2ed5ffe 100644
--- a/include/vm/class.h
+++ b/include/vm/class.h
@@ -1,5 +1,7 @@
-#ifndef __CLASS_H
-#define __CLASS_H
+#ifndef _VM_CLASS_H
+#define _VM_CLASS_H
+
+#include <assert.h>
#include "vm/field.h"
#include "vm/itable.h"
@@ -134,4 +136,69 @@ struct vm_class *vm_class_get_array_element_class(const
struct vm_class *array_c
enum vm_type vm_class_get_storage_vmtype(const struct vm_class *class);
struct vm_class *vm_class_get_class_from_class_object(struct vm_object *clazz);
+static inline void
+vm_field_set_int32(const struct vm_field *field, int32_t value)
+{
+ assert(vm_field_is_static(field));
+
+ *(int32_t *) &field->class->static_values[field->offset] = value;
+}
+
+static inline int32_t
+vm_field_get_int32(const struct vm_field *field)
+{
+ assert(vm_field_is_static(field));
+
+ return *(int32_t *) &field->class->static_values[field->offset];
+}
+
+static inline void
+vm_field_set_int64(const struct vm_field *field, int64_t value)
+{
+ assert(vm_field_is_static(field));
+
+ *(int64_t *) &field->class->static_values[field->offset] = value;
+}
+
+static inline int64_t
+vm_field_get_int64(const struct vm_field *field)
+{
+ assert(vm_field_is_static(field));
+
+ return *(int64_t *) &field->class->static_values[field->offset];
+}
+
+static inline void
+vm_field_set_float(const struct vm_field *field, float value)
+{
+ assert(vm_field_is_static(field));
+
+ *(float *) &field->class->static_values[field->offset] = value;
+}
+
+static inline float
+vm_field_get_float(const struct vm_field *field)
+{
+ assert(vm_field_is_static(field));
+
+ return *(float *) &field->class->static_values[field->offset];
+}
+
+static inline void
+vm_field_set_object(const struct vm_field *field, struct vm_object *value)
+{
+ assert(vm_field_is_static(field));
+
+ *(void **) &field->class->static_values[field->offset] = value;
+}
+
+static inline struct vm_object *
+vm_field_get_object(const struct vm_field *field)
+{
+ assert(vm_field_is_static(field));
+
+ return *(struct vm_object **)
+ &field->class->static_values[field->offset];
+}
+
#endif /* __CLASS_H */
--
1.6.0.4
------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Jatovm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jatovm-devel