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