diff options
Diffstat (limited to 'libjava/include/java-cpool.h')
-rw-r--r-- | libjava/include/java-cpool.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/libjava/include/java-cpool.h b/libjava/include/java-cpool.h new file mode 100644 index 000000000..412250230 --- /dev/null +++ b/libjava/include/java-cpool.h @@ -0,0 +1,134 @@ +// java-cpool.h - Constant pool parsing header. -*- c++ -*- + +/* Copyright (C) 1999, 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +#ifndef __JAVA_CPOOL_H__ +#define __JAVA_CPOOL_H__ + +#include <gcj/javaprims.h> + +// we rename these, to avoid polluting the name space +#define JV_CONSTANT_Undefined (0L) +#define JV_CONSTANT_Utf8 (1L) +#define JV_CONSTANT_Unicode (2L) +#define JV_CONSTANT_Integer (3L) +#define JV_CONSTANT_Float (4L) +#define JV_CONSTANT_Long (5L) +#define JV_CONSTANT_Double (6L) +#define JV_CONSTANT_Class (7L) +#define JV_CONSTANT_String (8L) +#define JV_CONSTANT_Fieldref (9L) +#define JV_CONSTANT_Methodref (10L) +#define JV_CONSTANT_InterfaceMethodref (11L) +#define JV_CONSTANT_NameAndType (12L) +#define JV_CONSTANT_ResolvedFlag (16L) +#define JV_CONSTANT_LazyFlag (32L) +#define JV_CONSTANT_ResolvedString (16L | 8L) +#define JV_CONSTANT_ResolvedClass (16L | 7L) + +extern inline void +_Jv_storeIndexes (_Jv_word *data, + _Jv_ushort index0, + _Jv_ushort index1) +{ + data->i = (((jint)index0) << 16) | (jint) index1; +} + +extern inline void +_Jv_loadIndexes (const _Jv_word *data, + _Jv_ushort& index0, + _Jv_ushort& index1) +{ + jint udata = data->i; + + _Jv_uint uindex0 = ((udata >> 16) & 0xffff); + _Jv_uint uindex1 = udata & 0xffff; + + index0 = uindex0; + index1 = uindex1; +} + +extern inline void +_Jv_storeFloat (_Jv_word *data, jfloat f) +{ + data->f = f; +} + +extern inline jfloat +_Jv_loadFloat (_Jv_word *data) +{ + return data->f; +} + +extern inline void +_Jv_storeInt (_Jv_word *data, jint i) +{ + data->i = i; +} + +extern inline jint +_Jv_loadInt (_Jv_word *data) +{ + return data->i; +} + +extern inline void +_Jv_storeLong (_Jv_word *data, jlong l) +{ +#if SIZEOF_VOID_P == 8 + data[0].l = l; +#else + _Jv_word2 tmp; + tmp.l = l; + data[0].ia[0] = tmp.ia[0]; + data[1].ia[0] = tmp.ia[1]; +#endif +} + +extern inline jlong +_Jv_loadLong (_Jv_word *data) +{ +#if SIZEOF_VOID_P == 8 + return data -> l; +#else + _Jv_word2 tmp; + tmp.ia[0] = data[0].ia[0]; + tmp.ia[1] = data[1].ia[0]; + return tmp.l; +#endif +} + +extern inline void +_Jv_storeDouble (_Jv_word *data, jdouble d) +{ +#if SIZEOF_VOID_P == 8 + data[0].d = d; +#else + _Jv_word2 tmp; + tmp.d = d; + data[0].ia[0] = tmp.ia[0]; + data[1].ia[0] = tmp.ia[1]; +#endif +} + +extern inline jdouble +_Jv_loadDouble (_Jv_word *data) +{ +#if SIZEOF_VOID_P == 8 + return data -> d; +#else + _Jv_word2 tmp; + tmp.ia[0] = data[0].ia[0]; + tmp.ia[1] = data[1].ia[0]; + return tmp.d; +#endif +} + + +#endif /* __JAVA_CPOOL_H__ */ |