* src/vm/jit/codegen-common.cpp (codegen_emit): Fixed temporary registers in
authorMichael Starzinger <michi@complang.tuwien.ac.at>
Mon, 9 Nov 2009 15:48:58 +0000 (16:48 +0100)
committerMichael Starzinger <michi@complang.tuwien.ac.at>
Mon, 9 Nov 2009 15:48:58 +0000 (16:48 +0100)
invocations for machines passing float arguments in integer registers.

src/vm/jit/codegen-common.cpp

index f05b6d951a932feeae117d1f29a6feaa8e5b5cad..a44c52fb3b6da56571e88a9262d095303d62a255 100644 (file)
@@ -1962,32 +1962,34 @@ gen_method:
                                                continue;
 
                                        if (!md->params[i].inmemory) {
-                                               assert(ARG_CNT > 0);
-                                               s1 = emit_load(jd, iptr, var, d);
-
                                                switch (var->type) {
                                                case TYPE_ADR:
                                                case TYPE_INT:
-                                                       assert(INT_ARG_CNT > 0);
+                                                       s1 = emit_load(jd, iptr, var, d);
                                                        emit_imove(cd, s1, d);
                                                        break;
 
                                                case TYPE_LNG:
+                                                       s1 = emit_load(jd, iptr, var, d);
                                                        emit_lmove(cd, s1, d);
                                                        break;
 
                                                case TYPE_FLT:
 #if !defined(SUPPORT_PASS_FLOATARGS_IN_INTREGS)
+                                                       s1 = emit_load(jd, iptr, var, d);
                                                        emit_fmove(cd, s1, d);
 #else
+                                                       s1 = emit_load(jd, iptr, var, REG_FTMP1);
                                                        M_CAST_F2I(s1, d);
 #endif
                                                        break;
 
                                                case TYPE_DBL:
 #if !defined(SUPPORT_PASS_FLOATARGS_IN_INTREGS)
+                                                       s1 = emit_load(jd, iptr, var, d);
                                                        emit_dmove(cd, s1, d);
 #else
+                                                       s1 = emit_load(jd, iptr, var, REG_FTMP1);
                                                        M_CAST_D2L(s1, d);
 #endif
                                                        break;