| // 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_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__ */ |