[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] pnet/engine jitc_arith.c
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] pnet/engine jitc_arith.c |
Date: |
Mon, 27 Feb 2006 16:27:00 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: pnet
Branch:
Changes by: Aleksey Demakov <address@hidden> 06/02/27 16:27:00
Modified files:
engine : jitc_arith.c
Log message:
convert operands of arithmetic binary operations to the required type
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_arith.c.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
Patches:
Index: pnet/engine/jitc_arith.c
diff -u pnet/engine/jitc_arith.c:1.2 pnet/engine/jitc_arith.c:1.3
--- pnet/engine/jitc_arith.c:1.2 Sat Dec 31 10:25:39 2005
+++ pnet/engine/jitc_arith.c Mon Feb 27 16:27:00 2006
@@ -26,164 +26,130 @@
static void JITCoder_Binary(ILCoder *coder, int opcode,
ILEngineType type1,
ILEngineType type2)
{
-
ILJITCoder *jitCoder = _ILCoderToILJITCoder(coder);
-
+ ILJitValue value1 = jitCoder->jitStack[jitCoder->stackTop - 2];
+ ILJitValue value2 = jitCoder->jitStack[jitCoder->stackTop - 1];
+ ILJitValue result = 0;
+
switch(opcode)
{
case IL_OP_ADD:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_add(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ AdjustMixedBinary(jitCoder, 0, &value1, &value2);
+ result = jit_insn_add(jitCoder->jitFunction, value1,
value2);
}
break;
case IL_OP_ADD_OVF:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_add_ovf(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
-
+ AdjustMixedBinary(jitCoder, 0, &value1, &value2);
+ result = jit_insn_add_ovf(jitCoder->jitFunction,
value1, value2);
}
break;
case IL_OP_ADD_OVF_UN:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_add_ovf(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ AdjustMixedBinary(jitCoder, 1, &value1, &value2);
+ result = jit_insn_add_ovf(jitCoder->jitFunction,
value1, value2);
}
break;
case IL_OP_SUB:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_sub(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
-
+ AdjustMixedBinary(jitCoder, 0, &value1, &value2);
+ result = jit_insn_sub(jitCoder->jitFunction, value1,
value2);
}
break;
case IL_OP_SUB_OVF:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_sub_ovf(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
-
+ AdjustMixedBinary(jitCoder, 0, &value1, &value2);
+ result = jit_insn_sub_ovf(jitCoder->jitFunction,
value1, value2);
}
break;
case IL_OP_SUB_OVF_UN:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_sub_ovf(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ AdjustMixedBinary(jitCoder, 1, &value1, &value2);
+ result = jit_insn_sub_ovf(jitCoder->jitFunction,
value1, value2);
}
break;
case IL_OP_MUL:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_mul(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ AdjustMixedBinary(jitCoder, 0, &value1, &value2);
+ result = jit_insn_mul(jitCoder->jitFunction, value1,
value2);
}
break;
case IL_OP_MUL_OVF:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_mul_ovf(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ AdjustMixedBinary(jitCoder, 0, &value1, &value2);
+ result = jit_insn_mul_ovf(jitCoder->jitFunction,
value1, value2);
}
break;
case IL_OP_MUL_OVF_UN:
{
-
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_mul_ovf(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ AdjustMixedBinary(jitCoder, 1, &value1, &value2);
+ result = jit_insn_mul_ovf(jitCoder->jitFunction,
value1, value2);
}
break;
case IL_OP_DIV:
-
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_div(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ AdjustMixedBinary(jitCoder, 0, &value1, &value2);
+ result = jit_insn_div(jitCoder->jitFunction, value1,
value2);
}
break;
case IL_OP_DIV_UN:
{
-
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_div(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ AdjustMixedBinary(jitCoder, 1, &value1, &value2);
+ result = jit_insn_div(jitCoder->jitFunction, value1,
value2);
}
break;
case IL_OP_REM:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_rem_ieee(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ AdjustMixedBinary(jitCoder, 0, &value1, &value2);
+ result = jit_insn_rem_ieee(jitCoder->jitFunction,
value1, value2);
}
break;
case IL_OP_REM_UN:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_rem_ieee(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ AdjustMixedBinary(jitCoder, 1, &value1, &value2);
+ result = jit_insn_rem_ieee(jitCoder->jitFunction,
value1, value2);
}
break;
case IL_OP_AND:
{
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_and(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ result = jit_insn_and(jitCoder->jitFunction, value1,
value2);
}
break;
case IL_OP_OR:
{
-
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_or(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ result = jit_insn_or(jitCoder->jitFunction, value1,
value2);
}
break;
case IL_OP_XOR:
{
-
- jitCoder->jitStack[jitCoder->stackTop - 2] =
jit_insn_xor(jitCoder->jitFunction,
-
jitCoder->jitStack[jitCoder->stackTop - 2],
-
jitCoder->jitStack[jitCoder->stackTop - 1]);
- JITC_ADJUST(jitCoder, -1);
+ result = jit_insn_xor(jitCoder->jitFunction, value1,
value2);
}
break;
+
+ default:
+ {
+ return;
+ }
+ }
- }
+ jitCoder->jitStack[jitCoder->stackTop - 2] = result;
+ JITC_ADJUST(jitCoder, -1);
}
/*
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] pnet/engine jitc_arith.c,
Aleksey Demakov <=