Signed-off-by: Vegard Nossum <vegard.nos...@gmail.com>
---
 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
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to