* src/vm/jit/mips/codegen.h: Likewise.
* src/vm/jit/i386/codegen.h: Likewise.
* src/vm/jit/powerpc64/codegen.h: Likewise.
* src/vm/jit/x86_64/codegen.h: Likewise.
* src/vm/jit/powerpc/codegen.c: Unified ICMD_RET with ICMD_GOTO.
* src/vm/jit/alpha/codegen.c: Likewise.
* src/vm/jit/mips/codegen.c: Likewise.
* src/vm/jit/i386/codegen.c: Likewise.
* src/vm/jit/powerpc64/codegen.c: Likewise.
* src/vm/jit/intrp/codegen.c: Likewise.
* src/vm/jit/x86_64/codegen.c: Likewise.
--HG--
branch : unified_variables
Christian Ullrich
Edwin Steiner
- $Id: codegen.c 5630 2006-10-02 13:16:20Z edwin $
+ $Id: codegen.c 5632 2006-10-02 13:43:15Z edwin $
*/
case ICMD_COPY:
case ICMD_MOVE:
- M_COPY(iptr->s1.varindex, iptr->dst.varindex);
+ emit_copy(jd, iptr, VAROP(iptr->s1), VAROP(iptr->dst));
break;
break;
case ICMD_GOTO: /* ... ==> ... */
+ case ICMD_RET: /* ... ==> ... */
+
M_BR(0);
codegen_addreference(cd, iptr->dst.block);
ALIGNCODENOP;
codegen_addreference(cd, iptr->sx.s23.s3.jsrtarget.block);
break;
- case ICMD_RET: /* ... ==> ... */
- /* s1.localindex = local variable */
-
- M_BR(0);
- codegen_addreference(cd, iptr->dst.block);
-/* var = &(rd->locals[iptr->s1.localindex][TYPE_ADR]); */
-/* if (var->flags & INMEMORY) { */
-/* M_ALD(REG_ITMP1, REG_SP, 8 * var->vv.regoff); */
-/* M_RET(REG_ZERO, REG_ITMP1); */
-/* } */
-/* else */
-/* M_RET(REG_ZERO, var->vv.regoff); */
- ALIGNCODENOP;
- break;
-
case ICMD_IFNULL: /* ..., value ==> ... */
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
Changes: Christian Thalinger
- $Id: codegen.h 5595 2006-09-30 23:06:36Z edwin $
+ $Id: codegen.h 5632 2006-10-02 13:43:15Z edwin $
*/
} while (0)
-#define M_COPY(s,d) emit_copy(jd, iptr, VAR(s), VAR(d))
#define ICONST(d,c) emit_iconst(cd, (d), (c))
#define LCONST(d,c) emit_lconst(cd, (d), (c))
Christian Ullrich
Edwin Steiner
- $Id: codegen.c 5630 2006-10-02 13:16:20Z edwin $
+ $Id: codegen.c 5632 2006-10-02 13:43:15Z edwin $
*/
break;
- /* load/store operations **********************************************/
+ /* load/store/copy/move operations ************************************/
case ICMD_ILOAD:
case ICMD_ALOAD:
case ICMD_LSTORE:
case ICMD_FSTORE:
case ICMD_DSTORE:
+ case ICMD_COPY:
+ case ICMD_MOVE:
emit_copy(jd, iptr, VAROP(iptr->s1), VAROP(iptr->dst));
break;
- /* pop/copy/move operations *******************************************/
+
+ /* pop operations *****************************************************/
/* attention: double and longs are only one entry in CACAO ICMDs */
break;
- case ICMD_COPY:
- case ICMD_MOVE:
-
- M_COPY(iptr->s1.varindex, iptr->dst.varindex);
- break;
/* integer operations *************************************************/
/* FALLTHROUGH! */
case ICMD_GOTO: /* ... ==> ... */
+ case ICMD_RET: /* ... ==> ... */
#if defined(ENABLE_SSA)
if ( ls != NULL ) {
codegen_addreference(cd, iptr->sx.s23.s3.jsrtarget.block);
break;
- case ICMD_RET: /* ... ==> ... */
-
- M_JMP_IMM(0);
- codegen_addreference(cd, iptr->dst.block);
- break;
-
case ICMD_IFNULL: /* ..., value ==> ... */
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
Changes:
- $Id: codegen.h 5595 2006-09-30 23:06:36Z edwin $
+ $Id: codegen.h 5632 2006-10-02 13:43:15Z edwin $
*/
} while (0)
-#if defined(ENABLE_SSA)
-#define M_COPY(from,to) \
- { \
- if ((ls==NULL) || (to->varkind != TEMPVAR) || \
- (ls->lifetime[-to->varnum-1].type != -1)) \
- { _M_COPY((from),(to)); } }
-#else
-#define M_COPY(from,to) _M_COPY((from),(to));
-#endif
-
-#define _M_COPY(s,d) emit_copy(jd, iptr, VAR(s), VAR(d))
-
#define ICONST(d,c) \
do { \
if ((c) == 0) \
Changes: Edwin Steiner
- $Id: codegen.c 5488 2006-09-13 00:21:40Z edwin $
+ $Id: codegen.c 5632 2006-10-02 13:43:15Z edwin $
*/
break;
case ICMD_GOTO: /* ... ==> ... */
+ case ICMD_RET: /* ... ==> ... */
/* op1 = target JavaVM pc */
gen_branch(GOTO);
break;
gen_branch(JSR);
break;
- case ICMD_RET: /* ... ==> ... */
- /* op1 = local variable */
-
- gen_RET(cd, index2offset(iptr->op1));
- break;
-
case ICMD_IFNULL: /* ..., value ==> ... */
/* op1 = target JavaVM pc */
This module generates MIPS machine code for a sequence of
intermediate code commands (ICMDs).
- $Id: codegen.c 5630 2006-10-02 13:16:20Z edwin $
+ $Id: codegen.c 5632 2006-10-02 13:43:15Z edwin $
*/
case ICMD_DSTORE: /* ..., value ==> ... */
case ICMD_COPY:
case ICMD_MOVE:
- case ICMD_DUP:
- M_COPY(iptr->s1.varindex, iptr->dst.varindex);
+ emit_copy(jd, iptr, VAROP(iptr->s1), VAROP(iptr->dst));
break;
Authors: Andreas Krall
- $Id: codegen.h 5615 2006-10-01 22:55:11Z edwin $
+ $Id: codegen.h 5632 2006-10-02 13:43:15Z edwin $
*/
M_DMOV(a, b); \
} while (0)
-#define M_COPY(s,d) emit_copy(jd, iptr, VAR(s), VAR(d))
#define ICONST(r,c) emit_iconst(cd, (r), (c))
#define LCONST(r,c) emit_lconst(cd, (r), (c))
Christian Ullrich
Edwin Steiner
- $Id: codegen.c 5631 2006-10-02 13:26:39Z edwin $
+ $Id: codegen.c 5632 2006-10-02 13:43:15Z edwin $
*/
break;
case ICMD_GOTO: /* ... ==> ... */
+ case ICMD_RET: /* ... ==> ... */
+
M_BR(0);
codegen_addreference(cd, iptr->dst.block);
ALIGNCODENOP;
codegen_addreference(cd, iptr->sx.s23.s3.jsrtarget.block);
break;
- case ICMD_RET: /* ... ==> ... */
- /* s1.localindex = local variable */
-
- M_BR(0);
- codegen_addreference(cd, iptr->dst.block);
- ALIGNCODENOP;
- break;
-
case ICMD_IFNULL: /* ..., value ==> ... */
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
Christian Ullrich
Edwin Steiner
- $Id: codegen.c 5630 2006-10-02 13:16:20Z edwin $
+ $Id: codegen.c 5632 2006-10-02 13:43:15Z edwin $
*/
case ICMD_DSTORE: /* ..., value ==> ... */
case ICMD_COPY:
case ICMD_MOVE:
- case ICMD_DUP: /* ..., a ==> ..., a, a */
- M_COPY(iptr->s1.varindex, iptr->dst.varindex);
+ emit_copy(jd, iptr, VAROP(iptr->s1), VAROP(iptr->dst));
break;
case ICMD_GOTO: /* ... ==> ... */
case ICMD_RET: /* ... ==> ... */
+
M_BR(0);
codegen_addreference(cd, iptr->dst.block);
ALIGNCODENOP;
Changes: Christian Thalinger
Christian Ullrich
- $Id: codegen.h 5618 2006-10-01 23:37:04Z edwin $
+ $Id: codegen.h 5632 2006-10-02 13:43:15Z edwin $
*/
} while (0)
-#define M_COPY(s,d) emit_copy(jd, iptr, VAR(s), VAR(d))
#define ICONST(d,c) emit_iconst(cd, (d), (c))
#define LCONST(reg,c) ICONST(reg,c)
Changes: Christian Ullrich
Edwin Steiner
- $Id: codegen.c 5630 2006-10-02 13:16:20Z edwin $
+ $Id: codegen.c 5632 2006-10-02 13:43:15Z edwin $
*/
break;
- /* load/store operations **********************************************/
+ /* load/store/copy/move operations ************************************/
case ICMD_ILOAD: /* ... ==> ..., content of local variable */
case ICMD_ALOAD: /* s1 = local variable */
case ICMD_LSTORE:
case ICMD_FSTORE:
case ICMD_DSTORE:
+ case ICMD_COPY:
+ case ICMD_MOVE:
emit_copy(jd, iptr, VAROP(iptr->s1), VAROP(iptr->dst));
break;
- /* pop/copy/move operations *******************************************/
+
+ /* pop operations *****************************************************/
/* attention: double and longs are only one entry in CACAO ICMDs */
break;
- case ICMD_COPY:
- case ICMD_MOVE:
-
- M_COPY(iptr->s1.varindex, iptr->dst.varindex);
- break;
/* integer operations *************************************************/
break;
case ICMD_GOTO: /* ... ==> ... */
+ case ICMD_RET: /* ... ==> ... */
M_JMP_IMM(0);
codegen_addreference(cd, iptr->dst.block);
codegen_addreference(cd, iptr->sx.s23.s3.jsrtarget.block);
break;
- case ICMD_RET: /* ... ==> ... */
- /* s1.localindex = local variable */
-
- M_JMP_IMM(0);
- codegen_addreference(cd, iptr->dst.block);
- break;
-
case ICMD_IFNULL: /* ..., value ==> ... */
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
Changes:
- $Id: codegen.h 5595 2006-09-30 23:06:36Z edwin $
+ $Id: codegen.h 5632 2006-10-02 13:43:15Z edwin $
*/
} while (0)
-#define M_COPY(s,d) emit_copy(jd, iptr, VAR(s), VAR(d))
-
#define ICONST(r,c) \
do { \
if ((c) == 0) \