From: Michael Starzinger Date: Mon, 9 Nov 2009 15:48:58 +0000 (+0100) Subject: * src/vm/jit/codegen-common.cpp (codegen_emit): Fixed temporary registers in X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=a624456aff999ba7292479ec20966b171adf8f56;hp=2c230a92972f83d0e9b8fc172907f861b5da4922;p=cacao.git * src/vm/jit/codegen-common.cpp (codegen_emit): Fixed temporary registers in invocations for machines passing float arguments in integer registers. --- diff --git a/src/vm/jit/codegen-common.cpp b/src/vm/jit/codegen-common.cpp index f05b6d951..a44c52fb3 100644 --- a/src/vm/jit/codegen-common.cpp +++ b/src/vm/jit/codegen-common.cpp @@ -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;