diff options
author | Anthony Green <green@gcc.gnu.org> | 1999-08-10 05:32:23 +0000 |
---|---|---|
committer | Anthony Green <green@gcc.gnu.org> | 1999-08-10 05:32:23 +0000 |
commit | 7941ceabf0f14279e93443a63ca4d355f3a88830 (patch) | |
tree | 9c08b881a7b585b2167568feb299be46b2919659 /libjava/include/java-cpool.h | |
parent | 3ef1cea850c365903de7137b0a444f49e736981f (diff) | |
download | gcc-7941ceabf0f14279e93443a63ca4d355f3a88830.zip gcc-7941ceabf0f14279e93443a63ca4d355f3a88830.tar.gz gcc-7941ceabf0f14279e93443a63ca4d355f3a88830.tar.bz2 |
[multiple changes]
Mon Aug 9 18:33:38 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* Makefile: Rebuilt.
* Makefile.am (toolexeclibdir): Add $(MULTISUBDIR) even for native
builds.
* java/net/natPlainSocketImpl.cc: Include <sys/select.h> only if
present.
* configure: Rebuilt.
* configure.in: Properly align --help output, fix capitalization
and punctuation.
* acinclude.m4: Likewise.
1999-08-09 Kresten Krab Thorup <krab@gnu.org>
* include/javaprims.h (_Jv_word, _Jv_word2): New types.
* include/java-interp.h (_Jv_InterpMethodInvocation): Use _Jv_word.
(_Jv_callInterpretedMethod): Unused. Remove.
(_Jv_InterpMethod::run,run_normal,run_synch_object,run_synch_class):
Use ffi_raw.
* include/java-cpool.h (_Jv_get, _Jv_put): Remove.
(_Jv_{store,load}{Indexes,Int,Float,Long,Double}): Use _Jv_word.
* boehm.cc (_Jv_MarkObj): Use _Jv_word.
* interpret.cc: use _Jv_word.
* defineclass.cc: use_Jv_word.
* resolve.cc: Use _Jv_word.
(_Jv_ResolvePoolEntry): Return _Jv_word.
* java/lang/Class.h (_Jv_Constants): Use _Jv_word for cpool.
* java/lang/natClassLoader.cc (_Jv_InternClassStrings): Use _Jv_word.
* interpret.cc (gnu::gcj::runtime::MethodInvocation::continue1):
Change comment.
From-SVN: r28641
Diffstat (limited to 'libjava/include/java-cpool.h')
-rw-r--r-- | libjava/include/java-cpool.h | 128 |
1 files changed, 36 insertions, 92 deletions
diff --git a/libjava/include/java-cpool.h b/libjava/include/java-cpool.h index f4d7ef99..b5e3ab3 100644 --- a/libjava/include/java-cpool.h +++ b/libjava/include/java-cpool.h @@ -31,142 +31,86 @@ details. */ #define JV_CONSTANT_ResolvedString (16L | 8L) #define JV_CONSTANT_ResolvedClass (16L | 7L) -/* We use the following two operations uniformly for all put/get operations - * in the runtime system (constant pool & stack), to assure that we keep - * everything in the same format. The idea is, that these should be inlined - * away, into just a simple store (for small data types, and a pair of stores - * if double or long has alignment greater than void *. On an 64-bit - * architecture, all operations should be simple stores; on a 32-bit - * architecture it depends on the alignment requirement for the specific - * type. */ - -template <class T> -static inline void _Jv_put (void *dst, T value) -{ -#if 0 - if (sizeof (T) == 8 && __alignof__ (T) > __alignof__ (void*)) - { - jint *v_dst = (jint*)(dst); - jint *v_src = (jint*)&value; - - v_dst[0] = v_src[0]; - v_dst[1] = v_src[1]; - } - else -#endif - { - *((T*) (dst)) = value; - } -} - -template <class T> -static inline T _Jv_get (void *src) -{ -#if 0 - if (sizeof (T) == 8 && __alignof__ (T) > __alignof__ (void*)) - { - T value; - jint *v_dst = (jint*)&value; - jint *v_src = (jint*)src; - - v_dst[0] = v_src[0]; - v_dst[1] = v_src[1]; - - return value; - } - else -#endif - { - return *((T*) (src)); - } -} - -/** needed to keep the CONSTANT_XXXRef & CONSTANT_NameAndType entries */ extern inline void -_Jv_storeIndexes (void **data, +_Jv_storeIndexes (_Jv_word *data, _Jv_ushort index0, _Jv_ushort index1) { - // accomodate 64bit machines... - if (sizeof (void*) == (2 * sizeof (jint))) - { - ((jint*)data)[0] = index0; - ((jint*)data)[1] = index0; - } - else - { - _Jv_put<jint>(data, ((jint)index0 << 16) | (jint)index1); - } + data->i = (((jint)index0) << 16) | (jint) index1; } extern inline void -_Jv_loadIndexes (const void **data, +_Jv_loadIndexes (const _Jv_word *data, _Jv_ushort& index0, _Jv_ushort& index1) { - if (sizeof (void*) == (2*sizeof (jint))) - { - index0 = ((jint*)data)[0]; - index0 = ((jint*)data)[1]; - } - else - { - jint udata = _Jv_get<jint>(data); + jint udata = data->i; - _Jv_uint uindex0 = ((udata >> 16) & 0xffff); - _Jv_uint uindex1 = udata & 0xffff; + _Jv_uint uindex0 = ((udata >> 16) & 0xffff); + _Jv_uint uindex1 = udata & 0xffff; - index0 = uindex0; - index1 = uindex1; - } + index0 = uindex0; + index1 = uindex1; } extern inline void -_Jv_storeFloat (void **data, jfloat f) +_Jv_storeFloat (_Jv_word *data, jfloat f) { - _Jv_put<jfloat>(data, f); + data->f = f; } extern inline jfloat -_Jv_loadFloat (void **data) +_Jv_loadFloat (_Jv_word *data) { - return _Jv_get<jfloat>(data); + return data->f; } extern inline void -_Jv_storeInt (void **data, jint i) +_Jv_storeInt (_Jv_word *data, jint i) { - _Jv_put<jint>(data, i); + data->i = i; } extern inline jint -_Jv_loadInt (void **data) +_Jv_loadInt (_Jv_word *data) { - return _Jv_get<jint>(data); + return data->i; } extern inline void -_Jv_storeLong (void **data, jlong l) +_Jv_storeLong (_Jv_word *data, jlong l) { - return _Jv_put<jlong>(data, l); + _Jv_word2 tmp; + tmp.l = l; + data[0].ia[0] = tmp.ia[0]; + data[1].ia[0] = tmp.ia[1]; } extern inline jlong -_Jv_loadLong (void **data) +_Jv_loadLong (_Jv_word *data) { - return _Jv_get<jlong>(data); + _Jv_word2 tmp; + tmp.ia[0] = data[0].ia[0]; + tmp.ia[1] = data[1].ia[0]; + return tmp.l; } extern inline void -_Jv_storeDouble (void **data, jdouble d) +_Jv_storeDouble (_Jv_word *data, jdouble d) { - _Jv_put<jdouble>(data, d); + _Jv_word2 tmp; + tmp.d = d; + data[0].ia[0] = tmp.ia[0]; + data[1].ia[0] = tmp.ia[1]; } extern inline jdouble -_Jv_loadDouble (void **data) +_Jv_loadDouble (_Jv_word *data) { - return _Jv_get<jdouble> (data); + _Jv_word2 tmp; + tmp.ia[0] = data[0].ia[0]; + tmp.ia[1] = data[1].ia[0]; + return tmp.d; } |