* src/vm/jit/arm/codegen.c: Fixed use of uninitialized variable.
[cacao.git] / src / vm / jit / arm / codegen.c
index 4a87bc94929db6f1850d72eee4ce31e8f9e63341..f96ee749c441bcf2d081eb4fab84f6121053786f 100644 (file)
@@ -1,6 +1,6 @@
 /* src/vm/jit/arm/codegen.c - machine code generator for Arm
 
-   Copyright (C) 1996-2005, 2006, 2007, 2008, 2009
+   Copyright (C) 1996-2011
    CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
 
    This file is part of CACAO.
@@ -248,6 +248,7 @@ void codegen_emit_instruction(jitdata* jd, instruction* iptr)
 {
        varinfo*            var;
        builtintable_entry* bte;
+       methoddesc*         md;
        methodinfo*         lm;             // Local methodinfo for ICMD_INVOKE*.
        unresolved_method*  um;
        fieldinfo*          fi;
@@ -257,7 +258,6 @@ void codegen_emit_instruction(jitdata* jd, instruction* iptr)
        int32_t             disp;
 
        // Get required compiler data.
-       codeinfo*     code = jd->code;
        codegendata*  cd   = jd->cd;
 
        /* the big switch */
@@ -1209,39 +1209,6 @@ void codegen_emit_instruction(jitdata* jd, instruction* iptr)
                        M_STR_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
                        break;
 
-               case ICMD_GETSTATIC:  /* ...  ==> ..., value                          */
-                       switch (fieldtype) {
-                       case TYPE_INT:
-#if defined(ENABLE_SOFTFLOAT)
-                       case TYPE_FLT:
-#endif
-                       case TYPE_ADR:
-                               d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
-                               M_ILD_INTERN(d, REG_ITMP3, 0);
-                               break;
-                       case TYPE_LNG:
-#if defined(ENABLE_SOFTFLOAT)
-                       case TYPE_DBL:
-#endif
-                               d = codegen_reg_of_dst(jd, iptr, REG_ITMP12_PACKED);
-                               M_LLD_INTERN(d, REG_ITMP3, 0);
-                               break;
-#if !defined(ENABLE_SOFTFLOAT)
-                       case TYPE_FLT:
-                               d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
-                               M_FLD_INTERN(d, REG_ITMP3, 0);
-                               break;
-                       case TYPE_DBL:
-                               d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
-                               M_DLD_INTERN(d, REG_ITMP3, 0);
-                               break;
-#endif
-                       default:
-                               assert(0);
-                       }
-                       emit_store_dst(jd, iptr, d);
-                       break;
-
                case ICMD_GETFIELD:   /* ..., objectref, value  ==> ...               */
 
                        s1 = emit_load_s1(jd, iptr, REG_ITMP3);
@@ -1727,6 +1694,7 @@ void codegen_emit_instruction(jitdata* jd, instruction* iptr)
 
                case ICMD_BUILTIN:
                        bte = iptr->sx.s23.s3.bte;
+                       md = bte->md;
                        if (bte->stub == NULL) {
                                disp = dseg_add_functionptr(cd, bte->fp);
                        } else {
@@ -1741,6 +1709,8 @@ void codegen_emit_instruction(jitdata* jd, instruction* iptr)
                        M_MOV(REG_PC, REG_PV);
 
 #if !defined(__SOFTFP__)
+                       d = md->returntype.type;
+
                        /* TODO: this is only a hack, since we use R0/R1 for float
                           return!  this depends on gcc; it is independent from
                           our ENABLE_SOFTFLOAT define */