dotgnu-pnet-commits
[Top][All Lists]
Advanced

[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);
 }
 
 /*




reply via email to

[Prev in Thread] Current Thread [Next in Thread]