diff options
author | Tom Tromey <tromey@gcc.gnu.org> | 2000-05-03 18:09:27 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2000-05-03 18:09:27 +0000 |
commit | dd5d628184dfb8c460ad01a480a366d735ba6f4f (patch) | |
tree | 3e04a4bb49ef6a42d094bc95768fa8e79e19dadf /gcc/java/javaop.h | |
parent | 8c8de5fc10d0c5bc658de7f2dfc75c33b1fb541d (diff) | |
download | gcc-dd5d628184dfb8c460ad01a480a366d735ba6f4f.zip gcc-dd5d628184dfb8c460ad01a480a366d735ba6f4f.tar.gz gcc-dd5d628184dfb8c460ad01a480a366d735ba6f4f.tar.bz2 |
expr.c (build_java_jsr): Use emit_jump, not expand_goto.
* expr.c (build_java_jsr): Use emit_jump, not expand_goto.
* javaop.h (WORD_TO_INT): New function.
(IMMEDIATE_s4): Use WORD_TO_INT.
* jcf.h (JPOOL_INT): Ditto.
* gjavah.c (decode_signature_piece): Don't treat `$' as namespace
separator.
From-SVN: r33636
Diffstat (limited to 'gcc/java/javaop.h')
-rw-r--r-- | gcc/java/javaop.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/java/javaop.h b/gcc/java/javaop.h index c603be1..d8418f7 100644 --- a/gcc/java/javaop.h +++ b/gcc/java/javaop.h @@ -98,7 +98,7 @@ union Word { #endif #ifndef IMMEDIATE_s4 #define IMMEDIATE_s4 (PC+=4, CHECK_PC_IN_RANGE(PC), \ - ((jint)((BCODE[PC-4] << 24) | (BCODE[PC-3] << 16) \ + (WORD_TO_INT((BCODE[PC-4] << 24) | (BCODE[PC-3] << 16) \ | (BCODE[PC-2] << 8) | (BCODE[PC-1])))) #endif @@ -109,6 +109,16 @@ WORD_TO_FLOAT(jword w) return wu.f; } +/* Sign extend w. */ +static inline jint +WORD_TO_INT(jword w) +{ + jint n = w; + n ^= (jint)1 << 31; + n -= (jint)1 << 31; + return n; +} + static inline jlong WORDS_TO_LONG(jword hi, jword lo) { |