From e51141364148bd97ff910aa6bac4b74bb3936b13 Mon Sep 17 00:00:00 2001 From: kseitz Date: Tue, 15 May 2007 21:35:28 +0000 Subject: * interpret.cc (STOREA): Rewrite using temporary variable to avoid double-macro expansion side-effects. (STOREI): Likewise. (STOREF): Likewise. (STOREL)[SIZEOF_VOID_P == 8]: Likewise. (STORED)[SIZEOF_VOID_P == 8]: Likewise. (STOREL)[SIZEOF_VOID_P != 8]: Likewise. (STORED)[SIZEOF_VOID_P != 8]: Likewise. (POKEI): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124746 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 12 ++++++ libjava/interpret.cc | 109 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 77 insertions(+), 44 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index dce155806cf..577ccc0e35d 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,15 @@ +2007-05-15 Keith Seitz + + * interpret.cc (STOREA): Rewrite using temporary variable to + avoid double-macro expansion side-effects. + (STOREI): Likewise. + (STOREF): Likewise. + (STOREL)[SIZEOF_VOID_P == 8]: Likewise. + (STORED)[SIZEOF_VOID_P == 8]: Likewise. + (STOREL)[SIZEOF_VOID_P != 8]: Likewise. + (STORED)[SIZEOF_VOID_P != 8]: Likewise. + (POKEI): Likewise. + 2007-05-12 David Daney PR libgcj/29324 diff --git a/libjava/interpret.cc b/libjava/interpret.cc index edb30660d5a..b078676365b 100644 --- a/libjava/interpret.cc +++ b/libjava/interpret.cc @@ -180,60 +180,81 @@ convert (FROM val, TO min, TO max) # define LOADD(I) LOADL(I) #endif -#define STOREA(I) \ - do { \ - DEBUG_LOCALS_INSN (I, 'o'); \ - locals[I].o = (--sp)->o; \ - } while (0) -#define STOREI(I) \ - do { \ - DEBUG_LOCALS_INSN (I, 'i'); \ - locals[I].i = (--sp)->i; \ - } while (0) -#define STOREF(I) \ - do { \ - DEBUG_LOCALS_INSN (I, 'f'); \ - locals[I].f = (--sp)->f; \ +#define STOREA(I) \ + do \ + { \ + jint __idx = (I); \ + DEBUG_LOCALS_INSN (__idx, 'o'); \ + locals[__idx].o = (--sp)->o; \ + } \ + while (0) +#define STOREI(I) \ + do \ + { \ + jint __idx = (I); \ + DEBUG_LOCALS_INSN (__idx, 'i'); \ + locals[__idx].i = (--sp)->i; \ } while (0) +#define STOREF(I) \ + do \ + { \ + jint __idx = (I); \ + DEBUG_LOCALS_INSN (__idx, 'f'); \ + locals[__idx].f = (--sp)->f; \ + } \ + while (0) #if SIZEOF_VOID_P == 8 -# define STOREL(I) \ - do { \ - DEBUG_LOCALS_INSN (I, 'l'); \ - DEBUG_LOCALS_INSN (I + 1, 'x'); \ - (sp -= 2, locals[I].l = sp->l); \ - } while (0) -# define STORED(I) \ - do { \ - DEBUG_LOCALS_INSN (I, 'd'); \ - DEBUG_LOCALS_INSN (I + 1, 'x'); \ - (sp -= 2, locals[I].d = sp->d); \ - } while (0) +# define STOREL(I) \ + do \ + { \ + jint __idx = (I); \ + DEBUG_LOCALS_INSN (__idx, 'l'); \ + DEBUG_LOCALS_INSN (__idx + 1, 'x'); \ + (sp -= 2, locals[__idx].l = sp->l); \ + } \ + while (0) +# define STORED(I) \ + do \ + { \ + jint __idx = (I); \ + DEBUG_LOCALS_INSN (__idx, 'd'); \ + DEBUG_LOCALS_INSN (__idx + 1, 'x'); \ + (sp -= 2, locals[__idx].d = sp->d); \ + } \ + while (0) #else -# define STOREL(I) \ - do { \ - DEBUG_LOCALS_INSN (I, 'l'); \ - DEBUG_LOCALS_INSN (I + 1, 'x'); \ - jint __idx = (I); \ - locals[__idx+1].ia[0] = (--sp)->ia[0]; \ - locals[__idx].ia[0] = (--sp)->ia[0]; \ - } while (0) -# define STORED(I) \ - do { \ - DEBUG_LOCALS_INSN (I, 'd'); \ - DEBUG_LOCALS_INSN (I + 1, 'x'); \ - jint __idx = (I); \ - locals[__idx+1].ia[0] = (--sp)->ia[0]; \ - locals[__idx].ia[0] = (--sp)->ia[0]; \ +# define STOREL(I) \ + do \ + { \ + jint __idx = (I); \ + DEBUG_LOCALS_INSN (__idx, 'l'); \ + DEBUG_LOCALS_INSN (__idx + 1, 'x'); \ + locals[__idx + 1].ia[0] = (--sp)->ia[0]; \ + locals[__idx].ia[0] = (--sp)->ia[0]; \ + } \ + while (0) +# define STORED(I) \ + do { \ + jint __idx = (I); \ + DEBUG_LOCALS_INSN (__idx, 'd'); \ + DEBUG_LOCALS_INSN (__idx + 1, 'x'); \ + locals[__idx + 1].ia[0] = (--sp)->ia[0]; \ + locals[__idx].ia[0] = (--sp)->ia[0]; \ } while (0) #endif #define PEEKI(I) (locals+(I))->i #define PEEKA(I) (locals+(I))->o -#define POKEI(I,V) \ - DEBUG_LOCALS_INSN(I,'i'); \ - ((locals+(I))->i = (V)) +#define POKEI(I,V) \ + do \ + { \ + jint __idx = (I); \ + DEBUG_LOCALS_INSN (__idx, 'i'); \ + ((locals + __idx)->i = (V)); \ + } \ + while (0) #define BINOPI(OP) { \ -- cgit v1.2.1